[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