[Bioc-devel] Package problems due to results() function from other package?

Hervé Pagès hp@ge@@on@g|thub @end|ng |rom gm@||@com
Tue Oct 31 22:58:07 CET 2023


Fixed in BiocGenerics 0.48.1: 
https://github.com/Bioconductor/BiocGenerics/commit/5fd6dfe93786292484dc53023ec681391f4559e0

With this version of BiocGenerics, SNPhood passes CHECK on my laptop 
(Ubuntu Linux). We'll see how it goes on Thursday's report. (The fix was 
too late for today's builds -- they already started -- so it won't 
reflect on tomorrow's report.)

Sorry again for the trouble.

Cheers,

H.

PS: Making results() an S4 generic defined in BiocGenerics would still 
be a good idea though, because a SNPhood user could still decide to 
_explicitly_ load DESeq2 with library(DESeq2) after they've loaded 
SNPhood, which would also break results(). I'll leave this to the 
authors/maintainers of SNPhood and/or DESeq2 to open an issue on the 
BiocGenerics repo to request this if they are interested.

On 10/31/23 13:49, Hervé Pagès wrote:
>
> Hmm.. so I was curious and did a little bit more investigation about this.
>
> The other package that also defines a results() function is DESeq2, 
> and it gets attached to the search path after calling 
> analyzeSNPhood(). You can actually observe this phenomena with the 
> following code:
>
>     library(SNPhood)
>     library(SNPhoodData)
>     search()  # DESeq2 is NOT attached
>     example(analyzeSNPhood)
>     search()  # DESeq2 is attached
>
> What's intriguing is that this only happens in BioC 3.18. In BioC 
> 3.17, running the analyzeSNPhood example does NOT alter the search 
> path. After spending some time tracking this down, it turns out that 
> the reason for this change of behaviour is a small tweak I made 
> recently to the updateObject() generic in BiocGenerics. An unfortunate 
> one that I will correct now.
>
> @Christian: A fix is on its way so you have nothing to do.
>
> Sorry for the trouble.
>
> H.
>
> On 10/31/23 09:44, Hervé Pagès wrote:
>>
>> On 10/31/23 07:22, Wolfgang Huber wrote:
>>
>>> Dear Christian
>>>
>>> If your vignette attaches another package that exports a “results” function, after it attached SNPhood which defines its own results function, then the R interpreter has no other choice than doing what it does.
>>>
>>> Other people adding additional functionality to their packages is probably not something one can really complain about, so I see three options
>>> - you use SNPhood::results in your vignette
>>> - you don’t attach the other package, and rather just use what you need from it using “::”
>>> - you convince Hervé to add ‘results' to BiocGenerics and everyone who exports such a function converts it to a method for that generic.
>>
>> My pleasure, and that's the cleanest solution. But it will only help 
>> if the package that defines the "other" results() function is a 
>> Bioconductor package and not a CRAN package. Has this package been 
>> identified?
>>
>> A 4th option is to make sure that the other package gets loaded 
>> _before_ SNPhood e.g. by putting an explicit library(<the other 
>> package>) before library(SNPhood) in your vignette, even though 
>> that's kind of hacky.
>>
>> Best,
>>
>> H.
>>
>>> Thank you and kind regards
>>> Wolfgang
>>>
>>> --
>>> Wolfgang Huber
>>> EMBL
>>> https://www.huber.embl.de/
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>> Il giorno 2023-10-28, alle ore 16:15, Christian Arnold<chrarnold using web.de>  ha scritto:
>>>>
>>>> For my package SNPhood that did not receive any code changes or updates
>>>> in quite a while, I suddenly see errors with Bioc 3.18:
>>>> https://master.bioconductor.org/checkResults/3.18/bioc-LATEST/SNPhood/nebbiolo2-buildsrc.html
>>>>
>>>> Error: processing vignette 'workflow.Rmd' failed with diagnostics:
>>>> unused argument (type = "allelicBias")
>>>>
>>>> This comes from this line I think:
>>>>
>>>> names(results(SNPhood.o, type = "allelicBias"))
>>>>
>>>> For literally years, this didnt cause any problems, and the results
>>>> function is actually (re)defined in the SNPhood package:
>>>>
>>>> results <- function(SNPhood.o, type, elements = NULL)
>>>>
>>>> I am not sure now what causes this. Should I use the syntax
>>>> SNPhood::results to make it clear, or I am wrongly assuming that the
>>>> wrong result function is taken that causes the error?
>>>>
>>>> Any pointers?
>>>>
>>>>
>>>> Best
>>>>
>>>> Christian
>>>>
>>>>
>>>> [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> Bioc-devel using r-project.org  mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>> _______________________________________________
>>> Bioc-devel using r-project.org  mailing list
>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>> -- 
>> Hervé Pagès
>>
>> Bioconductor Core Team
>> hpages.on.github using gmail.com
> -- 
> Hervé Pagès
>
> Bioconductor Core Team
> hpages.on.github using gmail.com

-- 
Hervé Pagès

Bioconductor Core Team
hpages.on.github using gmail.com

	[[alternative HTML version deleted]]



More information about the Bioc-devel mailing list