[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