[Bioc-devel] How to define S4 method for class from another package

Stephen Martin Pederson @tephen@peder@on @end|ng |rom @de|@|de@edu@@u
Wed Apr 3 16:17:12 CEST 2019

Hi Martin,

Thanks for the help. Everything was working, despite missing methods for signature = "ANY" (which is now fixed).
It was just the feedback given when submitting & when I sought clarification to ease my confusion, that was confirmed as the interpretation. I've just re-implemented that particular one using S3 dispatch using the functions getGcDistn.default, getGcDistn.character, getGcDistn.DNAStringSet, based on a modification of your reply here: https://stackoverflow.com/questions/12100856/combining-s4-and-s3-methods-in-a-single-function.

The original discussion which made me think it's not permissable is here: https://github.com/Bioconductor/Contributions/issues/985#issuecomment-468003572

Thanks again,


From: Martin Morgan <mtmorgan.bioc using gmail.com>
Sent: Thursday, 4 April 2019 12:18 AM
To: Stephen Martin Pederson; bioc-devel using r-project.org
Subject: Re: [Bioc-devel] How to define S4 method for class from another package

Lots of package do this so probably you're missing a step, e.g., import(Biostrings) or importClassesFrom(Biostrings, DNAStringSet).

What makes you think it's not permissible?


On 4/3/19, 1:19 AM, "Bioc-devel on behalf of Stephen Martin Pederson" <bioc-devel-bounces using r-project.org on behalf of stephen.pederson using adelaide.edu.au> wrote:


    I'm really struggling with how to use an S4 class defined in another package, where I would like to define a method for it in my package. By way of simple example, I'd like to use a DNAStringSet to define an expected GC distribution based on a given fragment size. I had defined the method

    setMethod("getGcDistn", "DNAStringSet", function(myArgs){myBody})

    after using setGeneric() to define the generic getGcDistn.

    When submitting to BioC, I was advised that this is not permissable & I'm trying to figure out what is the best etiquette & best practice. I haven't really turned up much guidance through numerous searches. Do I just write a standard function which checks the class and executes the code as required without using S4 dispatch?

    (Disclaimer: I'm very easily confused by the simplest things)

    Thanks in advance,


         [[alternative HTML version deleted]]

    Bioc-devel using r-project.org mailing list

	[[alternative HTML version deleted]]

More information about the Bioc-devel mailing list