Joss-reviews: [REVIEW]: ClimDown: Climate Downscaling in R

Created on 11 Aug 2017  Â·  57Comments  Â·  Source: openjournals/joss-reviews

Submitting author: @jameshiebert (James Hiebert)
Repository: https://github.com/pacificclimate/ClimDown
Version: v1.0.7
Editor: @karthik
Reviewer: @mdsumner
Archive: 10.5281/zenodo.1184647

Status

status

Status badge code:

HTML: <a href="http://joss.theoj.org/papers/87c76a9d8f39f0dafbda6388b82f5cf0"><img src="http://joss.theoj.org/papers/87c76a9d8f39f0dafbda6388b82f5cf0/status.svg"></a>
Markdown: [![status](http://joss.theoj.org/papers/87c76a9d8f39f0dafbda6388b82f5cf0/status.svg)](http://joss.theoj.org/papers/87c76a9d8f39f0dafbda6388b82f5cf0)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer questions

@mdsumner, please carry out your review in this issue by updating the checklist below (please make sure you're logged in to GitHub). The reviewer guidelines are available here: http://joss.theoj.org/about#reviewer_guidelines. Any questions/concerns please let @karthik know.

Conflict of interest

  • [x] As the reviewer I confirm that there are no conflicts of interest for me to review this work (such as being a major contributor to the software).

Code of Conduct

General checks

  • [x] Repository: Is the source code for this software available at the repository url?
  • [x] License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • [x] Version: Does the release version given match the GitHub release (1.0.3)?
  • [x] Authorship: Has the submitting author (@jameshiebert) made major contributions to the software?

Functionality

  • [x] Installation: Does installation proceed as outlined in the documentation?
  • [x] Functionality: Have the functional claims of the software been confirmed?
  • [x] Performance: Have any performance claims of the software been confirmed?

Documentation

  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • [x] Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • [x] Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • [x] Automated tests: Are there automated tests or manual steps described so that the function of the software can be verified?
  • [x] Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • [x] Authors: Does the paper.md file include a list of authors with their affiliations?
  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] References: Do all archival references that should have a DOI list one (e.g., papers, datasets, software)?
accepted published recommend-accept review

Most helpful comment

Thanks for the detailed review and excellent comments. I have clarified a few things inline below, and have noted where we need to make changes to address your concerns.

There's no notes in the readme for installing from either CRAN or Github.

Fixed in branch.

A .travis.yml check would be good, since there are system dependencies (NetCDF) and having a known build script is helpful.

You must have missed it, because we have been running Travis builds for a bit over a year. You can see the config here and the build output here.

License: GPL-3 in DESCRIPTION (not in LICENSE file)

The GPL-3 license was in a COPYING file which is standard in Open Source projects. To address your comment, we have now since included LICENSE as a symbolic link to COPYING.

Release version 1.0.3 is in a branch (not in recent history of trunk)

All 16 releases are tagged in the source control, for example:

https://github.com/pacificclimate/ClimDown/releases/tag/1.0.3

Our practice is to maintain a "release" branch, that accepts merges from master, and maintains any automatically generated files required for installation (e.g. all the .Rd doc files).

Since NetCDF can be tricky, having Linux and OSX install instructions would be helpful.

Good suggestion. We have added a description of system deps and linked to install instructions in branch.

I don't find it clear what the purpose of the package is from the
README or documentation, I think this needs more explanation of the
motivation.

Good suggestion. We have added a section to the README to motivate the package better.

Performance I think is hard to demonstrate since the application is
so specific, and it's very deeply wrapped up in parallelization
schemes. The README should mention the systems on which this has
been applied and whether it's worth trying to use this on other
systems.

Good suggestion. We have added a section about this in branch.

There are full examples are in the tests, and these are pretty
comprehensive - I think some of the code here should be used as
examples in the documentation. It needs to be made clearer up front
that the main interface for this package is to run via the scripts
in exec/.

Good suggestion. We have added examples in this commit.

third is a specialized sort to be sufficiently fast.
...
rerank is an optimization, does it need to be exported?

No, rerank is not simply an optimization; it is imperative to the credibility of the downscaling process. We have added a better explanation of its purpose to the package docs.

The motivation for who the users of this package is useful for is
not made clear. Is this to publish a set of working scripts for the
PCIC, or is it also intended for general users of climate data to
pick up this package and use?

General use. We have tried to motivate it better in a new section in the README.

All 57 comments

Hello human, I'm @whedon. I'm here to help you with some common editorial tasks for JOSS. @mdsumner it looks like you're currently assigned as the reviewer for this paper :tada:.

:star: Important :star:

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As as reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all JOSS reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

Here is my review notes for the specific checks.

Installation

There's no notes in the readme for installing from either CRAN or Github.

Sufficient code to install is

## install.packages("devtools")
devtools::install_github("pacificclimate/ClimDown")

For R CMD check include

install.packages("RUnit")

A .travis.yml check would be good, since there are system dependencies (NetCDF) and having
a known build script is helpful.

General checks

  • License: GPL-3 in DESCRIPTION (not in LICENSE file)

  • Release version 1.0.3 is in a branch (not in recent history of trunk)

Functionality

  • No instructions for installation in the readme, but there is in the CONTRIBUTING.rst and the installation as per Github/R Packages standard was fine. Since NetCDF can be tricky, having
    Linux and OSX install instructions would be helpful.

  • I don't find it clear what the purpose of the package is from the README or documentation, I think
    this needs more explanation of the motivation.

  • Performance I think is hard to demonstrate since the application is so specific, and it's very deeply wrapped up in parallelization schemes. The README should mention the systems on which this has been applied and whether it's worth trying to use this on other systems.

Documentation

The documentation describes the overall process, but not the mechanics of using the package much. There aren't examples beyond an uncommented sequence in parallelization and in the exec/ scripts.

There are full examples are in the tests, and these are pretty comprehensive - I think some of the code here should be used as examples in the documentation. It needs to be made clearer up front that the main interface for this package is to run via the scripts in exec/.

The paper.md mentions '... high-level wrapper functions that perform each of three downscaling steps: CI, CA, and QDM, as well as one wrapper that runs the entire BCCAQ pipeline.'

The actual functions are

bccaq.netcdf.wrapper

ca.netcdf.wrapper
ci.netcdf.wrapper
qdm.netcdf.wrapper

rerank.netcdf.wrapper

with the first being the 'one wrapper', the middle three are the downscaling steps and the third is a specialized sort to be sufficiently fast. Each of these functions are so-named wrappers because they don't actually perform in a functional sense, but to be invoked from the command line with the scripts
that are in /exec/. I think this workflow should be made clearer, and they can be easily summarized on the front page/s (README, package-doc) to explain what they do in one place.

bccaq, ci and qdm accept input as two input file names and provide output as a side effect written to a third file in the form obs.file, gcm.file, out.file, varname='tasmax'.

ca take the same analogous input files but return a list of vectors.

rerank is an optimization, does it need to be exported?

  • Community input: there is the Github issues in the DESCRIPTION.

Software paper

The motivation for who the users of this package is useful for is not made clear. Is this to publish
a set of working scripts for the PCIC, or is it also intended for general users of climate data to pick up this package and use?

@jameshiebert Can you please respond to comments from Michael?

Yes, thanks @mdsumner for taking the time to review. I'll try to put together a detailed response early next week.

Thanks for the detailed review and excellent comments. I have clarified a few things inline below, and have noted where we need to make changes to address your concerns.

There's no notes in the readme for installing from either CRAN or Github.

Fixed in branch.

A .travis.yml check would be good, since there are system dependencies (NetCDF) and having a known build script is helpful.

You must have missed it, because we have been running Travis builds for a bit over a year. You can see the config here and the build output here.

License: GPL-3 in DESCRIPTION (not in LICENSE file)

The GPL-3 license was in a COPYING file which is standard in Open Source projects. To address your comment, we have now since included LICENSE as a symbolic link to COPYING.

Release version 1.0.3 is in a branch (not in recent history of trunk)

All 16 releases are tagged in the source control, for example:

https://github.com/pacificclimate/ClimDown/releases/tag/1.0.3

Our practice is to maintain a "release" branch, that accepts merges from master, and maintains any automatically generated files required for installation (e.g. all the .Rd doc files).

Since NetCDF can be tricky, having Linux and OSX install instructions would be helpful.

Good suggestion. We have added a description of system deps and linked to install instructions in branch.

I don't find it clear what the purpose of the package is from the
README or documentation, I think this needs more explanation of the
motivation.

Good suggestion. We have added a section to the README to motivate the package better.

Performance I think is hard to demonstrate since the application is
so specific, and it's very deeply wrapped up in parallelization
schemes. The README should mention the systems on which this has
been applied and whether it's worth trying to use this on other
systems.

Good suggestion. We have added a section about this in branch.

There are full examples are in the tests, and these are pretty
comprehensive - I think some of the code here should be used as
examples in the documentation. It needs to be made clearer up front
that the main interface for this package is to run via the scripts
in exec/.

Good suggestion. We have added examples in this commit.

third is a specialized sort to be sufficiently fast.
...
rerank is an optimization, does it need to be exported?

No, rerank is not simply an optimization; it is imperative to the credibility of the downscaling process. We have added a better explanation of its purpose to the package docs.

The motivation for who the users of this package is useful for is
not made clear. Is this to publish a set of working scripts for the
PCIC, or is it also intended for general users of climate data to
pick up this package and use?

General use. We have tried to motivate it better in a new section in the README.

Excellent, thanks for all this.

Just a few notes.

The devtools installation can use this syntax now, which you might prefer:

{r} devtools::install_github("pacificclimate/ClimDown@release")

I did miss the .travis.yml, and now realize why - I'm used to seeing "badges" in github readmes, which you might consider adding - but I'll remember not to assume travis will always include these ...

I think you've addressed all my comments very well. Thanks!

I've confirmed all the check boxes in the list above.

Thanks @mdsumner!

@@jameshiebert Please let me know where you have archived the software so we can proceed with finalizing this submission. I will need a Zenodo or figshare DOI.

@karthik Done. DOI = 10.5281/zenodo.1164286 Is there anything else that you need?

@whedon set 10.5281/zenodo.1164286 as archive

OK. 10.5281/zenodo.1164286 is the archive.

@whedon generate pdf

Attempting PDF compilation. Reticulating splines etc...
PDF failed to compile for issue #360 with the following error: 

 /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/psych.rb:379:in `parse': (tmp/360/paper.md): could not find expected ':' while scanning a simple key at line 26 column 1 (Psych::SyntaxError)
    from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/psych.rb:379:in `parse_stream'
    from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/psych.rb:327:in `parse'
    from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/psych.rb:254:in `load'
    from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/psych.rb:475:in `block in load_file'
    from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/psych.rb:474:in `open'
    from /app/vendor/ruby-2.3.4/lib/ruby/2.3.0/psych.rb:474:in `load_file'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/lib/whedon.rb:73:in `initialize'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/lib/whedon/processor.rb:26:in `new'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/lib/whedon/processor.rb:26:in `set_paper'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/bin/whedon:37:in `prepare'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor/base.rb:466:in `start'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/bin/whedon:99:in `<top (required)>'
    from /app/vendor/bundle/ruby/2.3.0/bin/whedon:22:in `load'
    from /app/vendor/bundle/ruby/2.3.0/bin/whedon:22:in `<main>'

@jameshiebert There is a problem with your yaml on the paper. There needs to be three - marks at the top and bottom. Bottom one (line 26) only has 2. Add the third and push and I should be able to generate a pdf.

Ah shoot; sorry about that. Pushed a patch to master/release branches... do I need to generate a new archive?

Yes please update the archive and I'll fix it here, then recompile the PDF.

Done. 10.5281/zenodo.1164299

@whedon set 10.5281/zenodo.1164299 as archive

OK. 10.5281/zenodo.1164299 is the archive.

@whedon generate pdf

Attempting PDF compilation. Reticulating splines etc...
PDF failed to compile for issue #360 with the following error: 

 /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/lib/whedon.rb:86:in `check_fields': Paper YAML header is missing expected fields: bibliography (RuntimeError)
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/lib/whedon.rb:74:in `initialize'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/lib/whedon/processor.rb:26:in `new'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/lib/whedon/processor.rb:26:in `set_paper'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/bin/whedon:37:in `prepare'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
    from /app/vendor/bundle/ruby/2.3.0/gems/thor-0.20.0/lib/thor/base.rb:466:in `start'
    from /app/vendor/bundle/ruby/2.3.0/bundler/gems/whedon-8307502c3aee/bin/whedon:99:in `<top (required)>'
    from /app/vendor/bundle/ruby/2.3.0/bin/whedon:22:in `load'
    from /app/vendor/bundle/ruby/2.3.0/bin/whedon:22:in `<main>'

Sorry, one more issue. Can you move your references to paper.bib and remove them from the paper?

Sure, no problem.

@whedon set 10.5281/zenodo.1164304 as archive

I'm sorry @jameshiebert, I'm afraid I can't do that. That's something only editors are allowed to do.

OK then :)

@whedon generate pdf

Attempting PDF compilation. Reticulating splines etc...
https://github.com/openjournals/joss-papers/blob/joss.00360/joss.00360/10.21105.joss.00360.pdf

@whedon set 10.5281/zenodo.1164304 as archive

OK. 10.5281/zenodo.1164304 is the archive.

@jameshiebert all set!
@arfon 🚀

W00t!

@arfon Could you check to make sure the bib parses correctly in the PDF?

Is there anything further that you guys need from me on this?

@whedon generate pdf

Attempting PDF compilation. Reticulating splines etc...

@jameshiebert - could you make sure you're citing the references in the body of your paper please? (You can read how to do that here)

Sure. Is there way that I can test it out locally before committing (e.g. with pandoc or something)? What's the command that you use for the article proof?

@jameshiebert - feel free to push commits to your repository and ask @whedon to compile it for you with @whedon generate pdf

@whedon generate pdf

Attempting PDF compilation. Reticulating splines etc...

@whedon generate pdf

Attempting PDF compilation. Reticulating splines etc...

@arfon References are cited in the paper and now included in the bibliography. Do you need me to create a new DOI/archive or can you work off my master branch?

@arfon References are cited in the paper and now included in the bibliography. Do you need me to create a new DOI/archive or can you work off my master branch?

Ideally we'd like there to be a new release that matches what was the finalized version of the repository when accepted.

@afron OK 10.5281/zenodo.1184647 is the new archive for v1.0.7.

@whedon set 10.5281/zenodo.1184647 as archive

OK. 10.5281/zenodo.1184647 is the archive.

@mdsumner - many thanks for your review here and to @karthik for editing this submission ✨

@jameshiebert - your paper is now accepted into JOSS and your DOI is https://doi.org/10.21105/joss.00360 :zap: :rocket: :boom:

:tada::tada::tada: Congratulations on your paper acceptance! :tada::tada::tada:

If you would like to include a link to your paper from your README use the following code snippet:

[![DOI](http://joss.theoj.org/papers/10.21105/joss.00360/status.svg)](https://doi.org/10.21105/joss.00360)

This is how it will look in your documentation:

DOI

We need your help!

Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

Awesome thanks for all of your assistance, feedback and guidance! I'm really appreciative of your shepherding through the process :)

Was this page helpful?
0 / 5 - 0 ratings