I pushed a fix into R devel. On Wed, May 9, 2018 at 8:56 AM, Paul Shannon < paul.thurmond.shan...@gmail.com> wrote:
> Hi Michael, > > Thank you for this work and the explanation. It’s good to know that my > problem will feed back into improvements in the methods package. > > I opted for a simpler workaround, for now, renaming my abstract class to > avoid the collision. > > - Paul > > > On May 8, 2018, at 8:25 AM, Michael Lawrence <lawrence.mich...@gene.com> > wrote: > > > > Thanks Paul. > > > > I've made improvements to the methods package so that there will no > longer be any messages about AnnotationTrack being duplicated, but I'll > need to work through some failures this is causing in tests. > > > > The first issue is interesting though. Since Gviz defines an > initialize() for AnnotationTrack, dispatch ends up using that intsead of > the default. That method (incorrectly in my opinion) silently drops > unrecognized arguments in "..." so it is effectively a no-op. Ideally the > method would eventually call callNextMethod(). Not doing so makes > assumptions about how the parent object is initialized. It would also make > this case work, just by luck. This is one reason why defining initialize() > methods is tricky and should be avoided. > > > > Unfortunately, the methods package will dispatch to a method, regardless > of the package of origin, unless there are methods with signatures > containing two or more classes of the same name. This might be easy to fix > but there could be performance regressions. This problem will happen all > the time if there are initialize() methods around. You should be able to > avoid this just by defining your own initialize() method that just calls > the next method. Ideally though Gviz would just drop its one. > > > > Michael > > > > On Mon, May 7, 2018 at 11:14 AM, Paul Shannon < > paul.thurmond.shan...@gmail.com> wrote: > > Hi Michael, > > > > > On May 4, 2018, at 1:36 PM, Michael Lawrence < > lawrence.mich...@gene.com> wrote: > > > > > > Do you have a reproducible example of this? It's probably a bug in the > methods package. > > > > > > > Sorry I did not get to this sooner. Here are two symptoms of the cache > class name collision: > > > > 1) igvR::displayTrack, if called after motifbreakR::plotMB, fails > (see error message below) > > 2) plotMB, if called after igvR is loaded, reports the class name > collision. > > > > - Paul > > > > library(SNPlocs.Hsapiens.dbSNP150.GRCh38) > > library(BSgenome.Hsapiens.UCSC.hg38) > > library(motifbreakR) > > > > snp <- "rs12050029" > > > > snps.gr <- snps.from.rsid(rsid = snp, > > dbSNP=SNPlocs.Hsapiens.dbSNP150.GRCh38, > > search.genome=BSgenome.Hsapiens.UCSC.hg38) > > > > > > results <- motifbreakR(snpList = snps.gr, filterp = TRUE, > > pwmList = query(MotifDb, "jaspar2018"), > > threshold = 1e-4, > > method = "ic", > > bkg = c(A=0.25, C=0.25, G=0.25, T=0.25), > > BPPARAM = BiocParallel::bpparam("SerialParam")) > > > > plotMB(results = results, rsid = snp, effect = c("weak", "strong")) > > > > > > library(igvR) > > igv <- igvR() > > setGenome(igv, "hg38") > > snp.track <- GRangesAnnotationTrack("snp", snps.gr, color="red") > > displayTrack(igv, snp.track) > > > > # this error is only seen if motifbreakR - and thus Gviz - have been > loaded > > # otherwise, displayTrack works fine > > # Error in if (trackType == "variant" && source == "file" && > fileFormat == : > > # missing value where TRUE/FALSE > > > > plotMB(results = results, rsid = snp, effect = c("weak", "strong")) > > > > # Found more than one class "AnnotationTrack" in cache; using the > first, from namespace 'Gviz' > > # Also defined by 'igvR' > > # Found more than one class "AnnotationTrack" in cache; using the > first, from namespace 'Gviz' > > # Also defined by 'igvR' > > # Found more than one class "AnnotationTrack" in cache; using the > first, from namespace 'Gviz' > > # Also defined by 'igvR' > > # Found more than one class "AnnotationTrack" in cache; using the > first, from namespace 'Gviz' > > # Also defined by 'igvR' > > # Found more than one class "AnnotationTrack" in cache; using the > first, from namespace 'Gviz' > > # Also defined by 'igvR' > > # Found more than one class "AnnotationTrack" in cache; using the > first, from namespace 'Gviz' > > # Also defined by 'igvR' > > > > > > > > > > > > > Michael > > > > > > On Fri, May 4, 2018 at 10:52 AM, Paul Shannon < > paul.thurmond.shan...@gmail.com> wrote: > > > I just discovered a class name collision - AnnotationTrack, in Gviz > and my new package igvR. wish to get wise counsel before proceeding with > a fix. Here’s the error message: > > > > > > Found more than one class "AnnotationTrack" in cache; > > > using the first, from namespace ‘igvR' Also defined by ‘Gviz’ > > > > > > AnnotationTrack is an abstract base class in my new package igvR. The > concrete derived classes at present are > > > > > > DataFrameAnnotationTrack > > > GRangesAnnotationTrack > > > UCSCBedAnnotationTrack > > > > > > It would be easy for me to rename AnnotationTrack to > “GenomeAnnotationTrack” or even “igvAnnotationTrack”, thereby avoiding the > name clash. > > > > > > Reasonable? Fix in both release and devel? > > > > > > Thanks - > > > > > > - Paul > > > > > > _______________________________________________ > > > Bioc-devel@r-project.org mailing list > > > https://stat.ethz.ch/mailman/listinfo/bioc-devel > > > > > > > > > > > > > > [[alternative HTML version deleted]] _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel