Dear Florian, dear all, I want to use Gviz::AnnotationTrack to visualize my own class. This class overloads the "[" operator. It seems that just the definition of my own "[" results in a method dispatching error:
Error in callNextMethod(x, i) : bad object found as method (class “function”) After defining "[" even AnnotationTrack instances that are not using my class throw this error. I do not understand the error. Did I something wrong? Can somebody enlighten me? Please find a minimal reproducible example below. Kind regards, Sebastian ### library("Gviz") ## create dummy class setClass("A", slots = list(start = "numeric", end = "numeric"), prototype = prototype( start = integer(), end = integer())) ## define a plotting function for A plotGVizA <- function(obj) { aTrack <- AnnotationTrack(start=obj@start, end=obj@end, name = "a", chromosome = "chr0", genome = "all") plotTracks(aTrack, from = min(obj@start), to = max(obj@end)) } ## define a plotting function without any A plotGViz <- function() { aTrack <- AnnotationTrack(start=c(1, 5), end=c(3, 10), name = "a", chromosome = "chr0", genome = "all") plotTracks(aTrack, from = 1, to = 10) } ## create an object of class A a <- new("A", start=c(1, 5), end=c(3, 10)) ## works plotGViz() plotGVizA(a) ## define the "[" operator for A setMethod("[", "A", function(x, i, j, ...) { return(c(x@start[i], x@end[i])) }) ## crashes with the following error message: ## Error in callNextMethod(x, i) : ## bad object found as method (class “function”) plotGVizA(a) plotGViz() traceback() #12: stop(gettextf("bad object found as method (class %s)", # dQuote(class(method))), domain = NA) #11: callNextMethod(x, i) #10: .local(x, i, ...) #9: GdObject[seqnames(GdObject) == chromosome(GdObject)] #8: .computeGroupRange(GdObject, hasAxis = hasAxis, hasTitle = hasTitle, # title.width = title.width) #7: .local(GdObject, ...) #6: FUN(X[[1L]], ...) #5: FUN(X[[1L]], ...) #4: lapply(trackList, consolidateTrack, chromosome = chromosome, # any(.needsAxis(trackList)), any(.needsTitle(trackList)), # title.width, alpha = hasAlpha, ...) #3: lapply(trackList, consolidateTrack, chromosome = chromosome, # any(.needsAxis(trackList)), any(.needsTitle(trackList)), # title.width, alpha = hasAlpha, ...) #2: plotTracks(aTrack, from = 1, to = 10) at #4 #1: plotGViz() sessionInfo() #R version 3.1.0 (2014-04-10) #Platform: x86_64-pc-linux-gnu (64-bit) # #locale: # [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C # [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 # [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 # [7] LC_PAPER=en_US.UTF-8 LC_NAME=C # [9] LC_ADDRESS=C LC_TELEPHONE=C #[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C # #attached base packages: #[1] parallel grid stats graphics grDevices utils datasets #[8] methods base # #other attached packages: #[1] XVector_0.4.0 IRanges_1.22.6 Gviz_1.8.0 #[4] BiocGenerics_0.10.0 devtools_1.5 vimcom.plus_0.9-93 #[7] setwidth_1.0-3 colorout_1.0-2 # #loaded via a namespace (and not attached): # [1] AnnotationDbi_1.26.0 BatchJobs_1.2 # [3] BBmisc_1.6 Biobase_2.24.0 # [5] BiocParallel_0.6.0 biomaRt_2.20.0 # [7] Biostrings_2.32.0 biovizBase_1.12.1 # [9] bitops_1.0-6 brew_1.0-6 #[11] BSgenome_1.32.0 cluster_1.15.2 #[13] codetools_0.2-8 colorspace_1.2-4 #[15] DBI_0.2-7 dichromat_2.0-0 #[17] digest_0.6.4 evaluate_0.5.5 #[19] fail_1.2 foreach_1.4.2 #[21] Formula_1.1-1 GenomeInfoDb_1.0.2 #[23] GenomicAlignments_1.0.1 GenomicFeatures_1.16.0 #[25] GenomicRanges_1.16.3 Hmisc_3.14-4 #[27] httr_0.3 iterators_1.0.7 #[29] lattice_0.20-29 latticeExtra_0.6-26 #[31] matrixStats_0.8.14 memoise_0.2.1 #[33] munsell_0.4.2 plyr_1.8.1 #[35] RColorBrewer_1.0-5 Rcpp_0.11.1 #[37] RCurl_1.95-4.1 R.methodsS3_1.6.1 #[39] Rsamtools_1.16.0 RSQLite_0.11.4 #[41] rtracklayer_1.24.0 scales_0.2.4 #[43] sendmailR_1.1-2 splines_3.1.0 #[45] stats4_3.1.0 stringr_0.6.2 #[47] survival_2.37-7 tools_3.1.0 #[49] VariantAnnotation_1.10.1 whisker_0.3-2 #[51] XML_3.98-1.1 zlibbioc_1.10.0 _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel