openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
707 stars 37 forks source link

[REVIEW]: LEGWORK: A python package for computing the evolution and detectability of stellar-origin gravitational-wave sources with space-based detectors #3998

Closed whedon closed 2 years ago

whedon commented 2 years ago

Submitting author: @TomWagg (Thomas Wagg) Repository: https://github.com/TeamLEGWORK/LEGWORK Version: v0.1.3 Editor: @arfon Reviewer: @dbkeitel, @cmbiwer Archive: 10.5281/zenodo.5942553

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

Status

status

Status badge code:

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

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) by leaving comments 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 instructions & questions

@dbkeitel & @cmbiwer, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @arfon know.

Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest

Review checklist for @dbkeitel

✨ Important: Please do not use the Convert to issue functionality when working through this checklist, instead, please open any new issues associated with your review in the software repository associated with the submission. ✨

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

Review checklist for @cmbiwer

✨ Important: Please do not use the Convert to issue functionality when working through this checklist, instead, please open any new issues associated with your review in the software repository associated with the submission. ✨

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

whedon commented 2 years ago

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @dbkeitel, @cmbiwer it looks like you're currently assigned to review this paper :tada:.

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

: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 a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all 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

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf
whedon commented 2 years ago

PDF failed to compile for issue #3998 with the following error:

 Can't find any papers to compile :-(
whedon commented 2 years ago
Software report (experimental):

github.com/AlDanial/cloc v 1.88  T=0.10 s (523.9 files/s, 133840.2 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          18           1093           1765           2067
Jupyter Notebook                13              0           6277            917
TeX                              1             12              0            217
Markdown                         5             33              0            151
YAML                             2             10             10             68
CSS                              1             10             10             55
reStructuredText                 7             67            136             49
DOS Batch                        1              8              1             26
JavaScript                       1              2              2             18
make                             1              4              7              9
TOML                             1              0              0              6
-------------------------------------------------------------------------------
SUM:                            51           1239           8208           3583
-------------------------------------------------------------------------------

Statistical information for the repository 'a41896e74960d3ed650b95e6' was
gathered on 2021/12/17.
The following historical commit information, by author, was found:

Author                     Commits    Insertions      Deletions    % of changes
Tom Wagg                       328          7459           4166           40.12
katiebreivik                    67          9504           7845           59.88

Below are the number of rows from each author that have survived and are still
intact in the current revision:

Author                     Rows      Stability          Age       % in comments
Katie Breivik              2149          100.0          8.0               11.54
Tom Wagg                   2798           37.5          6.2                9.72
arfon commented 2 years ago

@dbkeitel, @cmbiwer – This is the review thread for the paper. All of our communications will happen here from now on.

Please read the "Reviewer instructions & questions" in the first comment above.

Both reviewers have checklists at the top of this thread (in that first comment) with the JOSS requirements. As you go over the submission, please check any items that you feel have been satisfied. There are also links to the JOSS reviewer guidelines.

The JOSS review is different from most other journals. Our goal is to work with the authors to help them meet our criteria instead of merely passing judgment on the submission. As such, the reviewers are encouraged to submit issues and pull requests on the software repository. When doing so, please mention https://github.com/openjournals/joss-reviews/issues/3998 so that a link is created to this thread (and I can keep an eye on what is happening). Please also feel free to comment and ask questions on this thread. In my experience, it is better to post comments/questions/suggestions as you come across them instead of waiting until you've reviewed the entire package.

We aim for the review process to be completed within about 4-6 weeks but given we're entering the holiday season, I suspect things might move slower than this.

arfon commented 2 years ago

@whedon generate pdf from branch joss

whedon commented 2 years ago
Attempting PDF compilation from custom branch joss. Reticulating splines etc...
whedon commented 2 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

whedon commented 2 years ago

:wave: @cmbiwer, please update us on how your review is going (this is an automated reminder).

whedon commented 2 years ago

:wave: @dbkeitel, please update us on how your review is going (this is an automated reminder).

dbkeitel commented 2 years ago

Getting started on the checklist, a first set of notes for the early items (basically the metadata):

License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?

Yes. See https://github.com/TeamLEGWORK/LEGWORK/issues/60 for a quick check on which authors it should list.

Contribution and authorship: Has the submitting author (@TomWagg) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

According to whedon's analytics posted above, @TomWagg and @katiebreivik have roughly similar contributions to the source code. The third author of the paper, Selma de Mink, does not appear to have contributed directly to the repository. I don't doubt her involvement in the scientific development of course, but just to have a full record, it would be nice to have a short note of confirmation here.

Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines

Very evidently yes, as demonstrated by the companion ApJ paper.

Installation: Does installation proceed as outlined in the documentation?

Installing both into a venv with pip and into a conda env work as expected. It would be nice to also package for conda-forge directly, but the documentation explains that this is currently not possible due to one external dependency not living in that system yet.

A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?

Both README and the main docs have a handful of concise but very clear intro sentences that fulfill this role well. The tutorials then cover the actual science scope in much more detail, which is a nice way to do so without putting a wall of text right at the start.

Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.

The instructions are clear and work. See https://github.com/TeamLEGWORK/LEGWORK/issues/61 for listing dependencies more visibly.

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

There's no detailed contributor's guide on coding style and details like that, but right in the main README (and hence PyPI page) there are links to the issue tracker and an encouragement to submit pull requests. The readthedocs page also contains a prominent "Submit an issue" link. I think this is sufficient.

dbkeitel commented 2 years ago

On the JOSS manuscript itself: overall I think it's in great shape, so I've checked off the first 4 items already. Just the references need a little extra work.

Main comments:

And a few more quick items:

I may also have additional comments on the manuscript later, after having had a closer look at the implementation and documentation.

TomWagg commented 2 years ago

Thanks for the comments @dbkeitel! First to address the metadata comments:

I have editted the LICENSE.rst to include all authors who contributed code and added the dependencies explicitly to the README from your comments (see PR #62).

The third author of the paper, Selma de Mink, does not appear to have contributed directly to the repository. I don't doubt her involvement in the scientific development of course, but just to have a full record, it would be nice to have a short note of confirmation here.

As you say, Selma has not contributed any code directly. She has however helped with the development of LEGWORK indirectly. Selma helped me with the derivation of the equations used in LEGWORK when I was first working on implementing them for simulations. Her main contributions have come from suggestions of features included in LEGWORK and about the structure of the package. She also helped significantly with the preparation of the manuscript.

TomWagg commented 2 years ago

Now the manuscript comments:

  • [x] As discussed in pre-review, the JOSS manuscript should be updated to explicitly point the reader to the ApJ companion paper for more details.

I wasn't sure exactly how to phrase this but I wrote "This paper is jointly submitted to ApJ, see Wagg+2021.", please let me know if there is a different way I should write this.

References: I'll wait for @arfon's thoughts on the length of references before touching this

Waveform packages: I'm honestly very unfamiliar with waveform things and so don't know a LISA waveform package off the top of my head. Maybe something like lisacattools could do what you have in mind? I imagine @katiebreivik will know more about this than me and can comment better?

I've addressed most of the checkboxes in the latest commits to the joss branch, thanks for suggesting these improvements!

The one thing I am having trouble with is the formatting of (e.g. \<list of citations>) type citations. Could @arfon perhaps help me with the syntax? Based on this page, a list of citations should look like this [@author1:2001; @author2:2001]. But if I then do [e.g. @author1:2001; @author2:2001], the e.g. sometimes appears between a random set of authors rather than at the start (this is causing the problem on L68 that @dbkeitel highlighted). What would be the proper way to do this?

dbkeitel commented 2 years ago

Thanks for the changes @TomWagg - I'll get back to the rest of the review sometime soon.

Regarding reference formatting, I think you can just use plain @ syntax without the square brackets and format the list by hand as you wish - e.g. in my only JOSS paper so far, I had a block

Many search methods have been developed and applied on LIGO [@TheLIGOScientific:2014jea] and Virgo [@TheVirgo:2014hva] data. See @Prix:2009oha, @Riles:2017evm, and @Sieniawska:2019hmd for reviews of the field.

which came out formatted like this: image

TomWagg commented 2 years ago

Ah gotcha, thanks @dbkeitel, I hadn't considered that I could just put them in parentheses manually! I've done this, though now there are nested parentheses if that is okay? I could also just remove the "e.g." but that doesn't seem reasonable as these are just examples of papers that address those topics.

TomWagg commented 2 years ago

I've actually just realised why the "e.g." appears at a weird location. I think JOSS uses pandoc cite-proc which sorts the references by author and then by date. So the "e.g". always goes with whichever citation I put first in the paper.md file...but they then get sorted and so the "e.g." moves with the citation if it doesn't come first alphabetically. I thought this would mean that I can fix the stray "e.g." by just putting them next to the citation that comes first alphabetically but this then affects the sorting! btw @arfon, whilst looking for examples I saw this recent JOSS paper and I think this problem of strangely placed "e.g." also affects it (see the citation list in the summary).

Is there any way to change the sorting that JOSS uses for list of citations? I list of all the citations chronologically in the paper rather than by author name and it would be nice to keep them like that.

katiebreivik commented 2 years ago

Hi All -- just catching up here. We can absolutely do a search to reference other LISA tools, like lisacattools as @TomWagg mentioned or ldasoft, and we can ask some folks who hang out in both space/ground-based communities to check for sure on LALSuite. My hunch is that since the waveforms for binaries in the LISA band are shockingly simple (in many cases just a sin wave for binaries below 1mHz), LALSuite should work if there are not hard-coded frequency limits. Thanks for the careful review and discussion so far @dbkeitel!

dbkeitel commented 2 years ago

@katiebreivik I did a few quick checks with lalsimulation.SimInspiralChooseTDWaveform. Just naively going to very low starting frequencies at fixed f_min blows up runtime and memory use, predictably. Reducing time resolution to make up for that works to some degree, but seems to run into some weird indexing issues when reducing it too much. If you're interested in knowing the transition region where it stops making sense, I can ask some of my more knowledgeable colleagues next week; but forgetting about this tangent and just citing some actually LISA-focused tools would be perfectly fine for me as well.

dbkeitel commented 2 years ago

Review update: I'm mostly through with digging as deep into the documentation and code as I think is required and am overall very impressed with the state of the package.

TomWagg commented 2 years ago

Thanks very much for all of the comments/issues so far @dbkeitel, I really appreciate all of the improvements you're helping to make to the package and its documentation! ☺️ And I'm glad to hear you like the tests and documentation, thanks! 😁

Another comment, mostly thinking towards future maintainability, is that there are a bunch of things hardcoded to particular models from particular papers (e.g. LISA instrumental and confusion noise as well as the set of verification binaries), which may need to change in the future. However it seems to me that the architecture of the package is laid out well enough that this should be possible even in a backwards-compatible way, by e.g. introducing new string arguments for the names of models into those functions.

This is definitely a concern I share! There's no doubt that there will be new models for sensitivity curve/confusion noise etc as we approach the launch of these sorts of space-based detectors so some of the hardcoded stuff will become obsolete. My 'plan' for this is that we will continue to implement new psd instruments and confusion noise models that can be chosen when computing SNRs etc. I imagine that in future we'll make lisa_psd or tianqin_psd aliases for whatever the latest models are (but also allow people to run things like robson19_psd instead).

So in an ideal world future users who have created a new model for something could create issues (or if we're lucky, pull requests) with the functions that are used and then we can add them in. And in the meantime they can always use a custom instrument in power_spectral_density (and even custom confusion noise once PR 72 is merged).

dbkeitel commented 2 years ago

Yes, direct aliasing is a little different from the wrapper-function-with-str-argument approach I was thinking of, but it sounds like a good and equivalent future model too! Whenever the default changes, you'll just have to be very explicit in your changelogs.

cmbiwer commented 2 years ago

I'll post my checklist and comments for this review on Friday, if that's alright.

katiebreivik commented 2 years ago

@katiebreivik I did a few quick checks with lalsimulation.SimInspiralChooseTDWaveform. Just naively going to very low starting frequencies at fixed f_min blows up runtime and memory use, predictably. Reducing time resolution to make up for that works to some degree, but seems to run into some weird indexing issues when reducing it too much. If you're interested in knowing the transition region where it stops making sense, I can ask some of my more knowledgeable colleagues next week; but forgetting about this tangent and just citing some actually LISA-focused tools would be perfectly fine for me as well.

Thanks for checking on this @dbkeitel! We did decide decide to go with LISA-focused tools only.

With the recently merged PR on our joss branch, I think we have covered your concerns/questions/suggestions so far including updates to documentation and the paper. Please don't hesitate to point out anything we may have missed though!

dbkeitel commented 2 years ago

Thanks @katiebreivik and @TomWagg ! I'm very busy right now, for about one more week; then I'll give both paper and package documentation another careful look, and expect to then be able to sign off quickly.

cmbiwer commented 2 years ago

Review checklist for @cmbiwer

Conflict of interest

  • [x] I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

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] Contribution and authorship: Has the submitting author made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • [x] Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines

Functionality

  • [x] Installation: Does installation proceed as outlined in the documentation?
  • [x] Functionality: Have the functional claims of the software been confirmed?
  • [x] Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

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 functionality 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] Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • [x] A statement of need: Does the paper have a section titled 'Statement of Need' that clearly states what problems the software is designed to solve and who the target audience is?
  • [x] State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • [x] Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • [x] References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?
cmbiwer commented 2 years ago

I've posted an issue here: https://github.com/TeamLEGWORK/LEGWORK/issues/84

Following the instructions on the installation page:

conda create --name legwork numpy scipy astropy numba matplotlib seaborn jupyter ipython
conda activate legwork
pip install schwimmbad legwork

Is not getting me a working package.

Some comments so far:

cmbiwer commented 2 years ago

As far as the paper, I think it is well written and describes the purpose. The only comment I have on the paper is the state of the field is summarized as "So far, most studies made use of custom made codes which have not been made publicly available." I wouldn't ask the authors to give examples of closed-source code. But do the authors know of publicly available codes that could be cited? The use of the word "some" implies to me that they could give examples and how it contrasts.

katiebreivik commented 2 years ago

Thanks @cmbiwer for pointing out the install problems based on the numpy version. We've just merged in a PR which fixes this issue, as well as removes the annoying package downgrades which happened because of the upper bounds on numba and numpy.

With regard to the paper and citation of tools. We've updated the draft based on @dbkeitel's suggestions above and I think the updated draft provides the citations you were after. I'll try to recompile the paper here now (though I'm not exactly sure whether this will work!).

katiebreivik commented 2 years ago

@whedon generate pdf from branch joss

whedon commented 2 years ago
Attempting PDF compilation from custom branch joss. Reticulating splines etc...
whedon commented 2 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

cmbiwer commented 2 years ago

Thanks, I took a look and this address my comment about the paper. I've checked off the last remaining checklist item for the paper. And thanks for looking at the installation. I'll go through the remainder of the package this week.

cmbiwer commented 2 years ago

I've gone through the package again after the installation was updated. The package is well documented and the automated tests have good coverage. I marked off nearly every item on the checklist. However, the only functionality I have found not working on the main branch is still the unit error using plot_sensitivity_curve and also ax.fill_between that was reported here: https://github.com/TeamLEGWORK/LEGWORK/issues/75

There was also a minor issue in the documentation pages for the demos, the variable fs seems to be missing from a number of those pages which I made an issue for here: https://github.com/TeamLEGWORK/LEGWORK/issues/86

If the authors could resolve this plotting issue with plot_sensitivity_curve and ax.fill_between, then I would say LEGWORK meets JOSS's requirements for publication, and I would recommend its publication.

arfon commented 2 years ago

⚡ thanks for the update @cmbiwer. @TomWagg - over to you here on next steps here.

TomWagg commented 2 years ago

Yeah thanks @cmbiwer! Indeed, we're on it @arfon, once we merge PR #87 I think we'll be good to go! 😄

TomWagg commented 2 years ago

PR 87 is merged into LEGWORK (bringing us up to v.0.2.3)! 😁 I think this means we have now addressed each of @cmbiwer's comments (but please do let me know if not!). If that's the case I think we'll also need the final go-ahead from @dbkeitel before moving forward 🙂

cmbiwer commented 2 years ago

I have check that PR#87 has addressed my last issues. And I have marked off all the items on the checklist now.

In my opinion, LEGWORK meets JOSS's requirements for publication and I recommend it is published in JOSS.

dbkeitel commented 2 years ago

Hi @TomWagg the updated paper looks good, seems you just missed one of my citation requests:

dbkeitel commented 2 years ago

The package itself is also almost ready to sign off from my side, with most of my issues resolved well. A few open points though:

The third point is optional I'd say and up to the authors. Once the one citation is added to the paper and the installation instructions and API docs fixed, I'm happy to sign off the review.

katiebreivik commented 2 years ago

Thanks @dbkeitel! We will get to work on the first two open points. For the third, we decided to add a scope/limitations section to the docs (here). We settled on this because we didn't want to repeat the same explanation in many different sections of the docs. I'd be interested to hear your thoughts on whether this is appropriate. Maybe we should add a link to the tab in the Quickstart to make sure that folks are aware?

dbkeitel commented 2 years ago

Thanks @katiebreivik I had completely overlooked that section! I agree it's a good solution. A link at the very end of the quickstart may indeed be a good idea too,

TomWagg commented 2 years ago

Hi again everyone, @katiebreivik and I have just merged in PR#92 and #93 and I believe they address all of @dbkeitel's remaining comments.

We've added the LIGO citation to the paper.md file, updated the installation instructions, added a link in the quickstart to the limitations page and made sure all of the functions are showing up in the documentation.

Let us know if there's anything else that we've missed! ☺️

TomWagg commented 2 years ago

@whedon generate pdf from branch joss

whedon commented 2 years ago
Attempting PDF compilation from custom branch joss. Reticulating splines etc...
whedon commented 2 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

dbkeitel commented 2 years ago

@arfon I'm now happy to sign off on this review. The updated installation instructions work for me again and the paper looks good now.

@TomWagg just one minor bibliography detail, which in most journals the production department would resolve but here I guess falls on you: The GW150914 ref currently looks like this

image

and should either have the Virgo Collaboration bit changed to LIGO Scientific Collaboration and Virgo Collaboration or removed entirely. (The bibstyle currently seems to treat it simply as the last entry in the human authors list, instead of as a separate collaboration element.)

TomWagg commented 2 years ago

Wonderful, thanks @dbkeitel. I've fixed the citation (looks like the curly braces weren't quite right so it split LIGO and Virgo at the end).

TomWagg commented 2 years ago

@whedon generate pdf from branch joss

whedon commented 2 years ago
Attempting PDF compilation from custom branch joss. Reticulating splines etc...
whedon commented 2 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left: