[Bioc-devel] Biobase/IRanges annotation maksing
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