[Bioc-devel] Biobase/IRanges annotation maksing
Martin Morgan
mtmorgan at fhcrc.org
Wed Feb 18 15:54:48 CET 2009
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
--
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109
Location: Arnold Building M2 B169
Phone: (206) 667-2793
More information about the Bioc-devel
mailing list