The idea isn't to use S4 at any cost, but to 'play well' with the Bioconductor ecosystem, including writing robust and maintainable code.
This comment https://github.com/Bioconductor/Contributions/issues/1355#issuecomment-580977106 provides some motivation; there was also an interesting exchange on the Bioconductor community slack about this (join at https://bioc-community.herokuapp.com/; discussion starting with https://community-bioc.slack.com/archives/C35G93GJH/p1580144746014800). The plyranges package http://bioconductor.org/packages/plyranges and recently accepted fluentGenomics workflow https://github.com/Bioconductor/Contributions/issues/1350 provide illustrations. In your domain it's really surprising that your package does not use (Import or Depend on) SummarizedExperiment or GenomicRanges packages. From a superficial look at your package, it seems like something like `reduce_dimensions()` could be defined to take & return a SummarizedExperiment and hence benefit from some of the points in the github issue comment mentioned above. Certainly there is a useful transition, both 'on the way in' to a SummarizedExperiment, and after leaving the more specialized bioinformatic computations to, e.g., display a pairs plot of the reduced dimensions, where one might re-shape the data to a tidy format and use 'plain old' tibbles; the fluentGenomics workflow might provide some guidance. At the end of the day it would not be surprising for Bioconductor packages to make use of tidy concepts and data structures, particularly in the vignette, and it would be a mistake for Bioconductor to exclude well-motivated 'tidy' representations. Martin Morgan On 2/6/20, 5:46 PM, "Bioc-devel on behalf of stefano" <bioc-devel-boun...@r-project.org on behalf of mangiolastef...@gmail.com> wrote: Hello, I have a package (ttBulk) under review. I have been told to replace the S3 system to S4. My package is based on the class tbl_df and must be fully compatible with tidyverse methods (inheritance). After some tests and research I understood that tidyverse ecosystem is not compatible with S4 classes. For example, several methos do not apparently handle S4 objects based on S3 tbl_df ```library(tidyverse)setOldClass("tbl_df") setClass("test2", contains = "tbl_df") my <- new("test2", tibble(a = 1)) my %>% mutate(b = 3) a b 1 1 3 ``` ```my <- new("test2", tibble(a = rnorm(100), b = 1)) my %>% nest(data = -b) Error: `x` must be a vector, not a `test2` object Run `rlang::last_error()` to see where the error occurred. ``` Could you please advise whether a tidyverse based package can be hosted on Bioconductor, and if S4 classes are really mandatory? I need to understand if I am forced to submit to CRAN instead (although Bioconductor would be a good fit, sice I try to interface transcriptional analysis tools to tidy universe) Thanks a lot. Stefano [[alternative HTML version deleted]] _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel