[Bioc-devel] Biobase/IRanges annotation maksing
Wolfgang Huber
huber at ebi.ac.uk
Thu Feb 19 11:06:46 CET 2009
Hi,
I seem to observe to observe an odd side effect of the ":::" operator.
Can anyone reproduce this?
Best wishes
Wolfgang
library("IRanges")
annotation
showMethods("annotation")
Biobase:::annotation
showMethods("annotation")
> library("IRanges")
Attaching package: 'IRanges'
The following object(s) are masked from package:base :
cbind,
order,
pmax,
pmax.int,
pmin,
pmin.int,
rbind,
rep.int,
table
> annotation
standardGeneric for "annotation" defined from package "IRanges"
function (x, ...)
standardGeneric("annotation")
<environment: 0x26b8da0>
Methods may be defined for arguments: x
Use showMethods("annotation") for currently available ones.
> showMethods("annotation")
Function: annotation (package IRanges)
x="AnnotatedList"
> Biobase:::annotation
standardGeneric for "annotation" defined from package "Biobase"
function (object)
standardGeneric("annotation")
<environment: 0x2920538>
Methods may be defined for arguments: object
Use showMethods("annotation") for currently available ones.
> showMethods("annotation")
Function "annotation":
<not a generic function>
> sessionInfo()
R version 2.9.0 Under development (unstable) (2009-02-18 r47956)
x86_64-unknown-linux-gnu
locale:
LC_CTYPE=C;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=en_GB.UTF-8;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices datasets utils methods base
other attached packages:
[1] IRanges_1.1.38 fortunes_1.3-6
loaded via a namespace (and not attached):
[1] Biobase_2.3.10
Martin Morgan wrote:
> Laurent Gatto <l.gatto at dnavision.be> writes:
>
>> Dear Bioc developeRs,
>>
>> I noted recently that Biobase's 'annotation' and 'annotation<-' objects are
>> masked by IRanges. Now calling annotation(AffyBatch), of
>> annotation(ExpressionSet) throws an 'unable to find an inherited method for
>> function "annotation", for signature "AffyBatch"' error.
>> Some of my functions fail because they rely on functions that call
>> annotation(AffyBatch).
>>
>> My questions are (1) is this the expected behaviour and if yes (2) how am I
>> and/or upstream maintainers supposed to elegantly deal with it?
>
> Hi Laurent -- I just came across this issue myself -- package A failed
> because it called a function in package B which had a dependency on
> package C which, due to changes in package D, now attached IRanges to
> the search path. Package B then found IRange::annotation on the search
> path, instead of Biobase::annotation.
>
> The solution was easy, in the end -- add
>
> importMethodsFrom(Biobase, annotation)
>
> to the NAMESPACE of package B, and move Biobase from 'Depends:' to
> 'Imports:' in package B, which is definitely the Right Thing To Do. It
> doesn't matter now that IRanges is on the user search path, package B
> always gets the function it wants.
>
> The solution is less elegant for a function that is not in a name
> space, e.g., because the user is writing it in the global environment,
> as in your example below. Then the solution is to use
>
> Biobase::annotation(eset)
>
> in place of annotation(eset).
>
> There might be additional technical solutions that Biobase / IRanges /
> Biostrings package authors can explore for this particular case...
>
> Martin
>
>> Illustrative code and sessionInfo are given below.
>>
>> I hope that I am not missing anything obvious here.
>>
>> Thank you in advance.
>>
>> Laurent
>>
>>
>> -- R code ---------------------------------------
>>> source("http://bioconductor.org/biocLite.R")
>>> update.packages(rep=biocinstallRepos(), ask=FALSE)
>>> library(affydata)
>> Loading required package: affy
>> Loading required package: Biobase
>>
>> Welcome to Bioconductor
>>
>> Vignettes contain introductory material. To view, type
>> 'openVignette()'. To cite Bioconductor, see
>> 'citation("Biobase")' and for packages 'citation(pkgname)'.
>>
>>> data(Dilution)
>>> annotation(Dilution)
>> [1] "hgu95av2"
>>> library(IRanges)
>> Attaching package: 'IRanges'
>>
>>
>> The following object(s) are masked from package:Biobase :
>>
>> annotation,
>> annotation<-
>>
>>
>> The following object(s) are masked from package:base :
>>
>> cbind,
>> order,
>> pmax,
>> pmax.int,
>> pmin,
>> pmin.int,
>> rbind,
>> rep.int,
>> table
>>
>>> annotation(Dilution)
>> Error in function (classes, fdef, mtable) :
>> unable to find an inherited method for function "annotation", for signature
>> "AffyBatch"
>>> Biobase:::annotation(Dilution)
>> [1] "hgu95av2"
>>> sessionInfo()
>> R version 2.9.0 Under development (unstable) (2009-02-12 r47911)
>> i686-pc-linux-gnu
>>
>> locale:
>> LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
>> other attached packages:
>> [1] IRanges_1.1.38 affydata_1.11.3 affy_1.21.7 Biobase_2.3.10
>>
>> loaded via a namespace (and not attached):
>> [1] affyio_1.11.3 preprocessCore_1.5.3 tools_2.9.0
>>
>> _______________________________________________
>> Bioc-devel at stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>
--
Best wishes
Wolfgang
----------------------------------------------------
Wolfgang Huber, EMBL-EBI, http://www.ebi.ac.uk/huber
More information about the Bioc-devel
mailing list