[Bioc-devel] Import BSgenome class without attaching BiocGenerics (and others)?
Bhagwat, Aditya
Ad|ty@@Bh@gw@t @end|ng |rom mp|-bn@mpg@de
Fri Sep 6 15:11:16 CEST 2019
I noticed the unfriendly indentation and formatting of my response , so I updated my original question on BioC support (with a much more eye-friendly formatting):
https://support.bioconductor.org/p/124442
________________________________
From: Bhagwat, Aditya
Sent: Friday, September 06, 2019 2:47 PM
To: Michael Lawrence
Cc: bioc-devel using r-project.org
Subject: RE: [Bioc-devel] Import BSgenome class without attaching BiocGenerics (and others)?
Thank you Michael,
Appreciate your time for helping me fill the gaps in my understanding of the S4 flow :-).
It all started when I defined (in my multicrispr package) the S4 coercer :
methods::setAs( "BSgenome",
"GRanges",
function(from) as(GenomeInfoDb::seqinfo(from), "GRanges")
When building, I noticed the message
in method for 'coerce' with signature '"BSgenome","GRanges"': no definition for class "BSgenome"
So, I added
BSgenome <- methods::getClassDef('BSgenome', package = 'BSgenome')
That loads all these dependencies.
>From your answer, I understand that there is currently no alternative to loading all these dependencies.
I guess because these dependencies are needed to provide for all required S4 methods for the BSgenome class, am I right?
Is there a way to define a methods::setAs without loading the class definition?
Aditya
________________________________________
From: Michael Lawrence [lawrence.michael using gene.com]
Sent: Friday, September 06, 2019 1:09 PM
To: Bhagwat, Aditya
Cc: bioc-devel using r-project.org
Subject: Re: [Bioc-devel] Import BSgenome class without attaching BiocGenerics (and others)?
The way to keep a "clean namespace" is to selectively import symbols
into your namespace, not to import _nothing_ into your namespace.
Otherwise, your code will fill with namespace qualifications that
distract from what is more important to communicate: the intent of the
code. And no, there's no way to define method signatures using
anything other than simple class names.
It would be interesting to explore alternative ways of specifying
method signatures. One way would be if every package exported a "class
reference" (class name with package attribute, at least) for each of
its classes. Those could be treated like any other exported object,
and referenced via namespace qualification. It would require major
changes to the methods package but that should probably happen anyway
to support disambiguation when two packages define a class of the same
name. It would be nice to get away from the exportClasses() and
importClasses() stuff. File that under the "rainy year" category.
Michael
On Fri, Sep 6, 2019 at 3:39 AM Bhagwat, Aditya
<Aditya.Bhagwat using mpi-bn.mpg.de> wrote:
>
> Dear Bioc devel,
>
> Is it possible to import the BSgenome class without attaching BiocGenerics (to keep a clean namespace during the development of multicrispr<https://gitlab.gwdg.de/loosolab/software/multicrispr>).
>
> BSgenome <- methods::getClassDef('BSgenome', package = 'BSgenome')
>
> (Posted earlier on BioC support<https://support.bioconductor.org/p/124442/> and redirected here following Martin's suggestion)
>
> Thankyou :-)
>
> Aditya
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioc-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
--
Michael Lawrence
Scientist, Bioinformatics and Computational Biology
Genentech, A Member of the Roche Group
Office +1 (650) 225-7760
michafla using gene.com
Join Genentech on LinkedIn | Twitter | Facebook | Instagram | YouTube
[[alternative HTML version deleted]]
More information about the Bioc-devel
mailing list