Closed AliciaSchep closed 7 years ago
Thanks for your submission @AliciaSchep! :grinning: Currently looking for reviewers.
A few comments:
The repository doesn't have a DOI yet but I guess you'd archive it after the review?
Here is the output from goodpractice::gp()
that can help you and the reviewers
It is good practice to
✖ write unit tests for all functions, and all package code in
general. 78% of code lines are covered by test cases.
R/AllGenerics.R:93:NA
R/AllGenerics.R:96:NA
R/AllGenerics.R:141:NA
R/AllGenerics.R:144:NA
R/AllGenerics.R:201:NA
... and 587 more lines
✖ not use "Depends" in DESCRIPTION, as it can cause name clashes,
and poor interaction with other packages. Use "Imports" instead.
✖ avoid long code lines, it is bad for readability. Also, many
people prefer editor windows that are about 80 characters wide.
Try make your lines shorter than 80 characters
R\AllGenerics.R:34:1
R\axes.R:389:1
R\axes.R:390:1
R\axes.R:510:1
R\axes.R:630:1
... and 37 more lines
✖ not import packages as a whole, as this can cause name clashes
between the imported packages. Instead, import only the specific
functions you need.
✖ fix this R CMD check NOTE: Namespace in Imports field not
imported from: 'fastcluster' All declared Imports should be
used.
✖ fix this R CMD check NOTE: add_col_clustering,Iheatmap: no
visible global function definition for 'hclust'
add_row_clustering,Iheatmap: no visible global function
definition for 'hclust' Undefined global functions or variables:
hclust Consider adding importFrom("stats", "hclust") to your
NAMESPACE file.
devtools::spell_check()
I found the following typos
Reviewers: @andeek @carlganz Due date: 2017-04-23
Thanks @maelle!
I have updated the typos, long lines, and some of the NAMESPACE issues.
For the use of DEPENDS, I think it is appropriate in this case to force user import of plotly. For importing the packages as whole, I am only importing S4Vectors and methods -- as I am using a lot of functions & classes from these packages I thought that might be appropriate, but am of course open to more guidance on this question.
I will work on adding more tests to get closer to 100% test coverage.
Great but note that 100% coverage isn't compulsory 😉
@AliciaSchep the reviewers are now assigned! 😀
Thanks for agreeing to review this package @andeek @carlganz! 😃
As a reminder here are links to the recently updated reviewing and packaging guides and to the review template.
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
The package includes all the following forms of documentation:
[x] A statement of need clearly stating problems the software is designed to solve and its target audience in README
Consider adding a more concrete statement of need in the readme. The paper.md and the vignette both provide good statements of need.
[x] Installation instructions: for the development version of package and any non-standard dependencies in README
Consider mentioning the dependency on BiocInstaller
since there may be users who are not familiar with how to install packages from BioConductor
.
[X] Vignette(s) demonstrating major functionality that runs successfully locally
Excellent vignette
[X] Function Documentation: for all exported functions in R help
[x] Examples for all exported functions in R Help that run successfully locally
setup_colorbar_grid
and save_iheatmap
do not include examples.
[X] Community guidelines including contribution guidelines in the README or CONTRIBUTING, and URL
, Maintainer
and BugReports
fields in DESCRIPTION
Paper (for packages co-submitting to JOSS)
The package contains a
paper.md
with:
- [X] A short summary describing the high-level functionality of the software
- [X] Authors: A list of authors with their affiliations
- [X] A statement of need clearly stating problems the software is designed to solve and its target audience.
- [ ] References: with DOIs for all those that have one (e.g. papers, datasets, software).
Estimated hours spent reviewing: 3
This package provides R users with a collection of easy-to-use functions for iteratively building complex interactive heatmaps. The iheatmap
function initiates a heatmap, and a variety of function of the form add_*
allow thee user to include annotations, barplots, clustering, grouping, dendrograms, labels, plots, titles, and summaries to both the rows, and columns as well as additional heatmaps. The package makes nice use of magrittr
pipes, and plotly
graphics, which gives it a nice modern feel.
The package is extremely well documented with an extensive vignette, and examples for almost every function. The package is also well tested with 79% code coverage. It contains a library of graphs, which are recreated, and then compared to in the tests.
Overall the package is very well done, and meets all the rOpenSci packaging guidelines. Functions have proper names, and documentation. Use of plotly
in depends makes sense.
A few suggestions:
Add clearer statement of need in readme. The first paragraph nicely explains what iheatmapr
does, but I don't think it is a clear statement of need. The JOSS paper, and the vignette both make clearer statements of need.
Consider mentioning how to install BiocInstaller
in the installation instructions. I'll confess, I had to google how to install BioConductor
packages because I hadn't done it before.
Add examples for setup_colorbar_grid
and save_iheatmap
(you already fixed AliciaSchep/iheatmapr#1)
Add DOIs for references in paper.md if they exist
Consider adding Travis tests for Mac, and App-Veyor tests for Windows.
Consider adding a badge in readme for minimum R version (i.e. badgecreatr::minimal_r_version_badge("2.10")
)
The vignette is very well done. Only suggestion is to maybe explain the differences between clustering
vs clusters
vs groups
since they all seem like similar concepts to me.
Hope that helps.
Kind Regards, Carl
Thanks a lot for your review @carlganz !
@carlganz thank you for the review and helpful suggestions! I will follow up on all the suggestions and post an update to this thread when that is complete.
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
The package includes all the following forms of documentation:
URL
, Maintainer
and BugReports
fields in DESCRIPTION The package contains a paper.md
with:
Estimated hours spent reviewing: 3
Overall, this package is really great. I had a really fun time playing with and and definitely see the importance of the work. I think the modular structure fits really nicely with how R is trending lately (in terms of piping) and I appreciate that that must not have been super straightforward to create. Overall, I think is a wonderful contribution and is very fun as well!
In addition, the vignette was extremely well put together and I appreciate the thorough documentation.
I have a few suggestions and explanations for any tasks above that did not receive an "X".
Perhaps you could explain the difference between add_col_clustering()
and add_col_dendrogram()
, it looks like they are very similar in the result.
save_iheatmap
, setup_colorbar_grid
[ ] Performance: I didn't see any "performance claims", but the package seemed to work well for me.
[ ] Automated tests: I received the following warnings using the test_that
script:
Warning messages:
1: In .removePreviousCoerce(class1, class2, where, prevIs) :
methods currently exist for coercing from "IheatmapMainX" to "IheatmapAxis"; they will be replaced.
2: In .removePreviousCoerce(class1, class2, where, prevIs) :
methods currently exist for coercing from "IheatmapMainY" to "IheatmapAxis"; they will be replaced.
[ ] Packaging guidelines: Avoid starting the description with the package name.
Thanks @andeek for the review! I hope to have time soon to address all issues in both reviews.
Thanks a lot @andeek ! :smile_cat:
@AliciaSchep now the two reviews are in, let us know if you have any question!
@AliciaSchep I see you've done some work on the package, do you think you'll soon be able to answer to the reviews? :wink:
Sorry, I'm behind on everything! I have made most of the changes suggested, although I still need to figure out why the tests on Appveyor are failing...
No problem! I work on Windows, so if you need me to test anything, just ask 😉
Thanks @maelle, I may finally have figured it out -- I think it is a question of precision as the tests seem to pass with 64 bit architecture but not 32 bit (updating appveyor to use 64 bit led to tests passing)... I'll need to change the tests a bit to not be so sensitive to precision (no good reason for the test data to have so many significant digits anyways)
Oh cool, nice catch! :fishing_pole_and_fish:
I have now addressed almost all of the reviewer concerns, thanks again to @andeek and @carlganz for taking the time to review the package.
Most of the references are other packages, and I couldn't find DOI, but I have added the DOI for the reference that is a paper.
I added examples for save_iheatmap
and setup_colorbar_grid
I added statement of need into README, similar to what was in vignette and paper.
[x] Add travis mac testing
[x] Add appveyor testing for windows [now passes!]
[x] Add BiocInstaller instructions
Added to README
[x] Add badge for minimal R
[x] Clarify clusters vs clustering vs groups functions [Reviewer 1] and clustering vs dendrogram [Reviewer 2]
Edited vignette to make more clear [basic idea is that add_*_clustering functions do the work of clustering for you, but if you want to do clustering yourself there are are lower level functions for adding dendrogram or cluster annotation]
[x] Add contributing guidelines
[x] Avoid starting description with package name
Have changed description field to avoid this
The main comments I haven't resolved:
I haven't been able to reproduce these warnings, so not sure how best to go about addressing them!
README & vignette don't make performance claims, the goal is not better performance than other similar packages, but more features & flexibility. Should I add performance tests?
Thanks @AliciaSchep! Nice Work!
Regarding what you say about performance do you cite these other packages in a Vignette? That'd be enough. 😊
@andeek and @carlganz are you happy with the changes? Please tell me if you don't have time to have a look, in which case I'll do that.
Thanks @maelle. With regards to other related packages, I cite them in README and paper.md, but not currently in vignette -- I can add that there as well.
@AliciaSchep yep maybe that'd be better because when you install the package from CRAN you often don't see the README&paper. In any case IMO just citing them is enough as regards performance. :-)
Great point about CRAN, hadn't thought of that -- I added mention of related packages to vignette as well.
@andeek @carlganz will you have a chance to look at the changes made by @AliciaSchep? :-)
I will take a look tomorrow.
I would like to, but I'm turning in my dissertation to my committee next week. I'm sorry to drop the ball, I understand if you can't wait for that.
@andeek just turned my dissertation over to my committee last week, so totally understand... I think delay is fine, although will defer to what @maelle thinks is best. Good luck wrapping up the dissertation!
On a related note, @carlganz and @maelle, the package is currently broken as a result of update in plotly... fix in progress https://github.com/AliciaSchep/iheatmapr/pull/7
Wow congratulations all around for the dissertations @andeek @AliciaSchep! :rocket: :tada:
If Alicia is ok with waiting and if Andee is motivated to have a look at the package again after turning in her dissertation and a break I guess, it's fine. But Andee you can also choose to drop the ball, as you wish.
:four_leaf_clover: for the fix Alicia!
@AliciaSchep were you able to fix the package?
@maelle - yes! I ended up making quite a few changes so as to remove the plotly R package dependency so iheatmapr can have more control over version of plotly.js and how to pass data to plotly.js, and less reliance on internal functioning of plotly R package, which can change. This has additional benefit of allowing for iheatmapr specific shiny handlers -- I added a section to vignette about shiny integration.
@AliciaSchep awesome, great work! :ok_hand:
@carlganz if you can have a look at the package for approving the answer to your review, that'd be great. 😉
I will work on this today.
I only had a few small issues, and they have all been addressed:
Added two examples
Improved statement of need
Expanded installation instructions
References don't have DOIs
I also took a look at the additional javascript code associated with the HTMLwidget, and it is very well done.
I've checked everything off in my review above. Let me know if you need any additional feedback.
@carlganz thanks a lot! :rocket: And thanks a bunch for even looking at the new code.
@AliciaSchep are you ok with waiting for the second reviewer to have a look again? Otherwise I can have a look at it myself next week before approving it.
@AliciaSchep @maelle I'll have time to look this weekend if you can hold off until Monday? Thanks for the patience!
@andeek oh I thought you'de be unavailable for a longer time, sorry! Thank you so much! And congrats on the thesis I suppose. :wink:
Hi all,
I've had a second pass and everything looks great. All of my questions were addressed. I also had a short look at the JS code and it looks very nice.
I do have one question: By changing to using the JS library (instead of the R package), should you reference the JS library instead of the R package in the paper?
Other than that, everything looks very nice. Easy to install now, and all tests pass on my machine. Great job! Let me know if I need to do anything more.
Thanks @carlganz and @andeek!
Re the new JS code, the main reason it's nice is that it was derived from a previous version of the plotly R package JS code -- I put a note at the top // Function adapted from Plotly R Package 3.60
, but perhaps I should give additional credit elsewhere? I was thinking of adding an acknowledgements section to README and/or vignette, could mention it there or more formally in package metadata.
Also, since I am now including the JS code from plotly should I adjust the package level author, copyright, and license info to reflect that? The plotly LICENSE is included in the inst/htmlwidgets/lib/plotlyjs folder. For another package that I submitted to Bioconductor that included a C++ library from a third party, I included an AUTHORS file and COPYRIGHTS file to very clear indicate that the C++ library was the work of other authors. Would a similar strategy be appropriate here as well?
Re updating the paper to reference JS library, I agree that it would be appropriate to cite the JS library but think that it should still also cite the R package. I'll update to cite both.
Many thanks @andeek! 👌
@AliciaSchep I'll do some last checks next week 😺
@AliciaSchep reg your questions I don't know, we can ask in the slack/on the forum 😉
But as a quick answer now here you can see an example of an author list where they acknowledge the authors of code that was adapted from elsewhere.
@AliciaSchep Looking at the package right now, looks great. Could you add the rOpenSci footer to the bottom of the README? This is the code [![ropensci_footer](http://ropensci.org/public_images/github_footer.png)](http://ropensci.org)
.
Reg. your question about the new JS code, was it settled or should we try finding an answer via the Slack or forum? I think that's the last thing before accepting your package.
After acceptance I'll ask you to transfer the repo to rOpenSci, and you'll need to:
But first let's solve this JS code issue. :wink:
Thanks @maelle. I have not yet figured out the JS code, been meaning to post a question, but haven't gotten around to it yet. Any suggestion of best place to post question? Not very familiar with the Slack, so don't know what 'channel' is appropriate
general is fine!
@AliciaSchep did the answer you got on slack help you?
@maelle yes it did, sorry i haven't made the change yet, will try to do so this weekend
@maelle, I finally updated the DESCRIPTION to add the plotly.js authors, using comment to indicate that they are authors of the js package, as suggested by Jim on ropensci slack and similar to what was done in package you suggested. I also added an acknowledgment section, in which I included a thanks to plotly r package for code that was adapted for this package. Let me know if you have additional suggestions for making sure appropriate credit is being given! I also added the ropensci footer
Great, now all problems have been solved as far as I can tell, good work! Approved!
To-dos:
[ ] Transfer the repo to the rOpenSci organization under "Settings" in your repo. I have invited you to a team that should allow you to do so.
[ ] OPTIONAL You can add the reviewers in DESCRIPTION as "rev" if you want to (and if they agree). See e.g. this example. It might raise a NOTE but you can then explain it in CRAN comments and it'll be accepted.
[ ] Add the (brand new!) "Peer-reviewed" badge to your README (in the future people will add this on submittal; it updates through the stages of review):
[![](https://ropensci.org/badges/107_status.svg)](https://github.com/ropensci/onboarding/issues/107)
[ ] Fix any links in badges for CI and coverage to point to the ropensci URL. (we'll turn on the services on our end.)
[ ] Activate Zenodo watching the repo
[ ] Tag and create a release so as to create a Zenodo version and DOI
[ ] Submit to JOSS using the Zenodo DOI. We will tag it for expedited review.
Welcome aboard! We'd also love a blog post about your package, either a short-form intro to it (https://ropensci.org/tech-notes/) or long-form post with more narrative about its development. ((https://ropensci.org/blog/). Let me know if you are interested.
woohoo! I transferred the repo to ropensci and added the peer review badge. @maelle For CI, what are the new links? Anything else I need to do setup the CI? I noticed that OpenCPU CI sent me an email saying build had failed, due to BiocInstaller not being installed (package has one BioC dependency, S4Vectors).
@carlganz and @andeek may I add you as "rev" to the package description? thanks again for reviewing the package! (feel free to let me know either here or ropensci slack or email-- aschep is my gmail address)
@AliciaSchep awesome, thanks for transferring it!
For OpenCPU let me pink @jeroen
For Appveyor here is the new badge [![Build status](https://ci.appveyor.com/api/projects/status/ds0vrh047h196vqj?svg=true)](https://ci.appveyor.com/project/ropensci/iheatmapr)
For Travis you just need to replace your username by "ropensci" in the old badge.
Don't worry about OpenCPU, it doesn't really support BioConductor yet :)
Thanks @jeroen
@AliciaSchep I forgot to mention to update the links in DESCRIPTION
I updated the links in Description & README. I tried doing the zenodo thing, but the repository doesn't show up in the list of repos to be able to archive? Is there some kind of access that has to be set @maelle?
Summary
Makes complex, interactive heatmaps. The package includes a modular system for iteratively building up complex heatmaps, as well as the
iheatmap
function for making relatively standard heatmaps.https://github.com/AliciaSchep/iheatmapr
Anyone who wants to visualize data using heatmaps. Package is not intended to be domain specific, although some fields tend to use heatmaps more than others.
There are great tools in R for creating relatively simple interactive heatmaps (plotly, d3heatmap, heatmaply) or creating static complex heatmaps (ComplexHeatmap). However, there are no tools (that I am aware of) facilitating easy creation of complex, interactive heatmaps.
Requirements
Confirm each of the following by checking the box. This package:
Publication options
paper.md
with a high-level description in the package root or ininst/
.Detail
[x] Does
R CMD check
(ordevtools::check()
) succeed? Paste and describe any errors or warnings:[x] Does the package conform to rOpenSci packaging guidelines? Please describe any exceptions:
If this is a resubmission following rejection, please explain the change in circumstances:
If possible, please provide recommendations of reviewers - those with experience with similar packages and/or likely users of your package - and their GitHub user names: