[Bioc-devel] NAMESPACE question

Michael Lawrence lawrence.michael at gene.com
Tue Oct 7 17:05:27 CEST 2014


Does that happen with the other methods or just "["? As a last resort, you
could just drop the import (because "[" is a primitive, it should just
work).

On Tue, Oct 7, 2014 at 3:08 AM, Robert Castelo <robert.castelo at upf.edu>
wrote:

> hi Martin,
>
> On 10/06/2014 07:24 PM, Martin Morgan wrote:
> [...]
>
>  There are two 'as.vector' generics, one defined in Matrix and one in
>> BiocGenerics (and made available via IRanges). These generics have
>> different methods
>>
>>  > showMethods(Matrix::as.vector)
>> Function: as.vector (package base)
>> x="abIndex", mode="ANY"
>> x="abIndex", mode="character"
>> x="ANY", mode="ANY"
>> x="dgCMatrix", mode="missing"
>> x="dgeMatrix", mode="missing"
>> x="diagonalMatrix", mode="missing"
>> x="dsCMatrix", mode="missing"
>> x="ldenseMatrix", mode="missing"
>> x="Matrix", mode="missing"
>> x="ndenseMatrix", mode="missing"
>> x="sparseVector", mode="character"
>> x="sparseVector", mode="missing"
>>
>>  > showMethods(BiocGenerics::as.vector)
>> Function: as.vector (package BiocGenerics)
>> x="ANY"
>> x="AtomicList"
>> x="Rle"
>> x="XDouble"
>> x="XInteger"
>> x="XRaw"
>> x="XString"
>> x="XStringSet"
>>
>> so it's important that your code clearly distinguish between generics.
>> One possibility is to remove importMethodsFrom(IRanges, as.vector) from
>> the NAMESPACE, and explicitly use IRanges::as.vector(...) in your code.
>>
>
> ok, i've done this as it is the easiest at the moment to meet the release
> schedule. i guess that in the future i should try to avoid using the '::'
> operator by importing exclusively what is needed from each package.
>
>  codetoolsBioC::writeNamespaceImports("qpgraph") might provide you with
>> some guidance (it's not 100% reliable; available via svn at
>> https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/codetoolsBioC
>> )
>> about what functionality is being imported.
>>
>
> thanks for the heads up about codetoolsBioC, i've tried it out and seen
> that some of the suggested imports are not necessary but some others i was
> really missing them (which makes me wonder how was it possible that he
> package did not break at those points).
>
> one further question related to NAMESPACE. i subset GRanges objects in the
> package via the '[' operator, i've included this into the NAMESPACE file as:
>
> importMethodsFrom(GenomicRanges,
>                   c, cbind, rbind,
>                   "mcols<-", start, end, strand, sort,
>                   "[", "[<-", "[[", "[[<-", "$", "$<-")
>
> however, when the package reaches a subset operation x[i] with x being a
> GRanges object, an entire package loading sequence starts:
>
> Loading required package: GenomicRanges
> Loading required package: BiocGenerics
> Loading required package: parallel
>
> Attaching package: ‘BiocGenerics’
> [... etc ...]
>
> which may look a bit odd to the user. for every other imported method the
> package uses them silently without loading the corresponding package, am i
> importing '[' for GRanges objects from the wrong package? is there a way to
> import '[' so that my package can use it without triggering that package
> loading sequence?
>
>
> thanks again!
> robert.
>
>
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>

	[[alternative HTML version deleted]]



More information about the Bioc-devel mailing list