ropensci / software-review

rOpenSci Software Peer Review.
289 stars 104 forks source link

Submission: BaseSet #359

Closed llrs closed 4 years ago

llrs commented 4 years ago

Submitting Author: Lluís (@llrs)
Repository: llrs/BaseSet Version submitted: 0.0.10 Editor: @annakrystalli
Reviewer 1: @arendsee
Reviewer 2: @j23414 Archive: TBD
Version accepted: TBD


Package: BaseSet
Title: Provides classes for working with sets
Version: 0.0.10
Authors@R: 
    person(given = "Lluís ",
           family = "Revilla Sancho",
           role = c("aut", "cre"),
           email = "lluis.revilla@gmail.com")
Description: A set collection, while not "tidy" in itself, can
    be thought of as three tidy data frames describing sets, elements and
    relations respectively. 'BaseSet' provides an approach to manipulate,
    load and use these virtual data frames.
License: MIT + file LICENSE
URL: https://github.com/llrs/BaseSet
BugReports: https://github.com/llrs/BaseSet/issues
Depends: 
    R (>= 3.6.0)
Imports: 
    dplyr (>= 0.7.8),
    magrittr,
    methods,
    rlang,
    utils,
    xml2
Suggests: 
    BiocStyle,
    covr,
    forcats,
    ggplot2,
    GO.db,
    GSEABase,
    knitr,
    org.Hs.eg.db,
    reactome.db,
    rmarkdown,
    spelling,
    testthat (>= 2.1.0),
    Biobase
VignetteBuilder: 
    knitr
Encoding: UTF-8
Language: en-US
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.0.2
Collate: 
    'AllClasses.R'
    'AllGenerics.R'
    'GMT.R'
    'GeneSetCollection.R'
    'activate.R'
    'add.R'
    'add_column.R'
    'add_relation.R'
    'adjacency.R'
    'arrange.R'
    'basesets-package.R'
    'cartesian.R'
    'complement.R'
    'data_frame.R'
    'deactivate.R'
    'droplevels.R'
    'elements.R'
    'filter.R'
    'group.R'
    'group_by.R'
    'head.R'
    'incidence.R'
    'independent.R'
    'operations.R'
    'intersection.R'
    'length.R'
    'list.R'
    'move_to.R'
    'mutate.R'
    'names.R'
    'naming.R'
    'nested.R'
    'obo.R'
    'power_set.R'
    'print.R'
    'pull.R'
    'relations.R'
    'remove.R'
    'remove_column.R'
    'rename.R'
    'select.R'
    'set.R'
    'size.R'
    'subtract.R'
    'tidy-set.R'
    'union.R'
    'utils-pipe.R'
    'xml.R'
    'zzz.R'

Scope

The package implements methods to work on sets, doing intersection, union, complementary and other set operations in a "tidy" way. It also allows to import from several formats used in the life science world. Like the GMT and the GAF or the OBO format file for ontologies.

The idea is to use the package for working with sets and signatures of genes in scRNAseq or in pathways and ontologies but it might work with other fields.

There is the sets package which implements a more generalized approach, that can store functions or lists as an element of a set (while mine it only allows to store a character or factor), but it is harder to operate in a tidy/long way. Also the operations of intersection and union need to happen between two different objects, while TidySet objects (the class implemented in BaseSet) can store a single set or thousands of them. In BaseSet is easier to operate and implement new fuzzy logic operations. It is developed openly on github compared to sets which I couldn't track how it is being developed.

The GSEABase partially implements this, but it doesn't allow to store fuzzy sets and it is also quite slow as it creates several classes for annotating each set. Neither does the BiocSets the package, which don't use the fuzzy set logic.

There is also the hierarchicalSets package that is focused on clustering of sets that are inside other sets and visualizations. However, BaseSet is focused on storing and manipulate sets including hierarchical sets.

Most of the replies are copied from #339, handeled by @melvidoni.

Technical checks

Confirm each of the following by checking the box. This package:

Publication options

JOSS Options - [ ] The package has an **obvious research application** according to [JOSS's definition](https://joss.readthedocs.io/en/latest/submitting.html#submission-requirements). - [ ] The package contains a `paper.md` matching [JOSS's requirements](https://joss.readthedocs.io/en/latest/submitting.html#what-should-my-paper-contain) with a high-level description in the package root or in `inst/`. - [ ] The package is deposited in a long-term repository with the DOI: - (*Do not submit your package separately to JOSS*)
MEE Options - [ ] The package is novel and will be of interest to the broad readership of the journal. - [ ] The manuscript describing the package is no longer than 3000 words. - [ ] You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see [MEE's Policy on Publishing Code](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/journal-resources/policy-on-publishing-code.html)) - (*Scope: Do consider MEE's [Aims and Scope](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/aims-and-scope/read-full-aims-and-scope.html) for your manuscript. We make no guarantee that your manuscript will be within MEE scope.*) - (*Although not required, we strongly recommend having a full manuscript prepared when you submit here.*) - (*Please do not submit your package separately to Methods in Ecology and Evolution*)

Code of conduct

j23414 commented 4 years ago

Plan to take a look again this week, thanks for the changes. And thanks @annakrystalli for organizing

arendsee commented 4 years ago

I'm double-checking some of the math. I'll get back with you in a bit.

arendsee commented 4 years ago

OK, the math checks out. Also, the extended vignette clarifies the fuzziness relationship.

I think this package will have a good future. There are a lot of neat directions you could take it. I think it will be good to share it with the community and get feedback. The package may incite a lot of debate, which is good. Once you and the community have hammered out the wrinkles and chosen the features and interface that is "best", maybe you can roll out a non-backwards compatible BaseSet2 package.

So, my final thoughts: the package is useful as is and will get much better as an active community grows around it.

j23414 commented 4 years ago

The new version passes checks so far... took a while to build the advanced vignette but I can see that fuzzy values were added (good). Glad to see more explanations and links in README, Fuzzy, and Advanced. For set_size, the new cardinality function matches what I'd expect in fuzzy sets.

In summary, can see how the package may be useful. Agree that it can continue to be refined with an active community.

annakrystalli commented 4 years ago

Approved! Thanks @llrs for submitting and @arendsee & @j23414 for your reviews! 🎉 🚀

To-dos:

Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"-type contributors in the Authors@R field (with their consent). More info on this here.

Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @stefaniebutland in your reply. She will get in touch about timing and can answer any questions.

We've put together an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding. Please tell us what could be improved, the corresponding repo is here.

annakrystalli commented 4 years ago

Thanks for transferring @llrs ! I've made you admin again 👍

llrs commented 4 years ago

Many thanks @annakrystalli for approving the package. I already transferred the package and hope to finish all the other steps either today or tomorrow.

Soon I'll begin my holidays and won't be able to contribute with a post for the blog, but I'd like to write one after September @stefaniebutland. But I'm also hoping to present on the Rstudio conference on January... not sure when I'll manage to write it up.

annakrystalli commented 4 years ago

Many thanks @annakrystalli for approving the package. I already transferred the package and hope to finish all the other steps either today or tomorrow.

No problem. Just ping when you are done. And enjoy your holidays! Well deserved 😎🏝

stefaniebutland commented 4 years ago

I'd like to write one after September @stefaniebutland. But I'm also hoping to present on the Rstudio conference

@llrs I just saw your tweet about your RStudio talk! This is wonderful. I'll mark my calendar to contact you in late September about a post.

Enjoy your holidays!

llrs commented 4 years ago

@annakrystalli I think I finished with all the required changes. Let me know if I missed anything. (I haven't submitted to CRAN yet. I'll wait until another submitted package is accepted to submit BaseSet to CRAN)

annakrystalli commented 4 years ago

Hey @llrs, everything looks good to me. A couple of things to note:

Otherwise, I'm happy to conclude the review and close the issue. Now it's time for my holiday too! 😎🏝🍹