Submitting author: @grlee77 (Gregory Lee)
Repository: https://github.com/PyWavelets/pywt
Version: v1.0.3
Editor: @jedbrown
Reviewer: @rafat, @souopgui
Archive: 10.5281/zenodo.2634243
Status badge code:
HTML: <a href="http://joss.theoj.org/papers/ae2368c137df5f2fa4673d746eb50a31"><img src="http://joss.theoj.org/papers/ae2368c137df5f2fa4673d746eb50a31/status.svg"></a>
Markdown: [](http://joss.theoj.org/papers/ae2368c137df5f2fa4673d746eb50a31)
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.)
@rafat & @souopgui, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:
The reviewer guidelines are available here: https://joss.theoj.org/about#reviewer_guidelines. Any questions/concerns please let @jedbrown know.
โจ Please try and complete your review in the next two weeks โจ
paper.md file include a list of authors with their affiliations?paper.md file include a list of authors with their affiliations?Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @rafat, 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 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:


For a list of things I can do to help you, just type:
@whedon commands
Attempting PDF compilation. Reticulating splines etc...
@rafat @souopgui :wave: Welcome and thanks for agreeing to review! The comments from @whedon above outline the review process, which takes place in this thread (possibly with issues filed in the PyWavelets repository). I'll be watching this thread if you have any questions.
@grlee77 Can you clarify whether this review should take place on the 'master' branch (where your paper sources currently reside) or in the '1.0.x' branch which contains the stated version? Thanks.
The features and functionality are the same in both 1.0.1 and master so I am fine with reviewing based on 1.0.1. The main difference is that master has dropped Python 2 support and has a few minor fixes. We will eventually include the fixes in a future release from the 1.0.x branch as well.
There are a number of basic demos of usage in the demo folder of the repository. The API documentation is pretty complete, but the docs don't have a lot of tutorials/demos. Some concrete examples for scientific applications are provided below.
There are a some image denoising demos functions in scikit-image that rely on PyWavelets (specifically for skimage.restoration.estimate_sigma and skimage.restoration.denoise_wavelet):
http://scikit-image.org/docs/dev/auto_examples/filters/plot_cycle_spinning.html
http://scikit-image.org/docs/dev/auto_examples/filters/plot_denoise_wavelet.html
An example of wrapping the wavelet transform into an operator (e.g. for potential use as a sparsity-enforcing regularizer in iterative medical image reconstruction) is available within ODL:
https://github.com/odlgroup/odl/blob/master/examples/trafos/wavelet_trafo.py
For time series analysis, a user working in the field of geophysics recently posted the following notebook with some examples to the mailing list:
https://gist.github.com/aprovecharLab/09ded80ae59ea510334e00926a15920f
Thanks, @grlee77. Note that upon acceptance, we'll ask you to tag and archive a release that includes any revisions that may have resulted from the review. That archive should include the final sources for the paper, which are currently in 'master'.
Okay, in that case, please just review from master and we will tag a new release once the review is completed. The 1.0.x branch was created to allow maintenance/bug fixes releases for Python 2.7 support through 2020 or so, but any new features introduced will not be backported to that branch.
@grlee77 There are a few minor issues with .rst files in the doc/source folder that are causing test_doc.py to fail when I run it manually from the folder. For example, line 335 of expected value has "Short name: db" but the code correctly returns "Short name: gaus" . There are no issues with the Python code as far as can I tell but you may want to take a look at the .rst files.
Thanks for pointing that out. It seems the tests in that file were being skipped by our CI scripts. I have fixed the failures and made sure TravisCI is running these tests in PyWavelets/pywt#463.
@grlee77 Quick questions to help me finalize my review:
- is there other part of the doc that I am missing?
I think you are asking about the PyWavelets documentation and not the manuscript itself? Specific functions do have additional references to the literature (see for example the docs for threshold or fswavedecn, but I agree that we are lacking an overview page with basic theory and key references, etc. Wavelets are well covered in many textbooks at this point, but it might still be worth having an abbreviated summary in the PyWavelet docs.
- Is there a way to try the automated test outside of the install procedure?
Yes, try:
import pywt
pywt.test()
hey @rafat, just checking if you are still working on this and if there are any other items left to address?
I just opened a PR at PyWavelets/pywt#475 to add a reference to the book by Daubechies, more clearly link Mallat to the multiresolution property of the transform, and to add a brief discussion of Kymatio in relation to PyWavelets.
Hi @grlee77 @jedbrown I finished my review a couple of weeks ago. Pywavelets is a very good software and everything works as it should on two different systems (Windows and Linux).
Thanks, @rafat.
@souopgui How's your review going? It looks like there are just a few items left.
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
Just wanted to check in with @souopgui as the review seems to have stalled: Are there still remaining items to address?
I think the only substantial change in master made subsequent to the review comments was updating the underlying testing framework used from nose to pytest since nose is no longer being updated. The tests themselves are the same as before (but hopefully will be refactored to some extent in the future to also make better use of features like pytest.mark.parametrize).
@grlee77 , I have not paid attention to email coming from github lately.
The toolbox is great and I am already recommending people to give it a try. For a topic of the importance of the wavelet, a toolbox like this one was missing. With the implementation of all the filters you guys implemented, this is a great tools.
With that, I am done with my review. Being less familiar with the review on github, if I am missing something to close the process, please let me know. And sorry a again for being out of the loop for this long.
@souopgui There are points unchecked in your review checklist at the top of this issue. Can you confirm those points so we can move forward with acceptance? Thanks!
@jedbrown I just checked those points based on the responses to my questions from the authors. I fully recommend the software.
@whedon check references
Attempting to check references...
```Reference check summary:
OK DOIs
MISSING DOIs
INVALID DOIs
@grlee77 There is one citation Stephan Mallat [@mallat2008wavelet] that is "in-text" and should be written Stephan Mallat [-@mallat2008wavelet] or @mallat2008wavelet. See https://rmarkdown.rstudio.com/authoring_bibliographies_and_citations.html#citation_syntax for syntax. That's all I notice so I think we'll be ready to archive after that one minor fix.
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
Thanks @jedbrown. It looks like the suggested [-@mallat2008wavelet] fixed the issue.
Looks good, thanks. One more minor issue: please remove the last sentence (citing your old Zenodo archive). A link to the current Zenodo archive will be in the sidebar so the 2018 archive will just be confusing. After removing that sentence, go ahead and create a current archive and report the DOI here.
Okay, I can remove that sentence as well as the prior Zenodo reference from the .bib.
FYI, I was following the example in the author guidelines when I originally added that line. Perhaps the example should also remove that line if it is no longer recommended?
I think I will backport the paper.md and .bib to the 1.0.x branch and just tag a 1.0.3 release there. Does that sound fine? I don't think there are any new user-facing features to justify a 1.1 release from master (it has just dropped Python 2.x support and switched to pytest for testing).
Thanks for pointing out the source of that verbiage. I've created a PR: https://github.com/openjournals/joss/pull/520
Yes, tagging v1.0.3 would be perfect.
(Our Editor in Chief merged the above PR.)
I tagged v1.0.3 and it is on Zenodo now:
https://zenodo.org/record/2634243
DOI: 10.5281/zenodo.2634243
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@grlee77 Could you please update the Zenodo archive's author list to match the paper?
There are six contributors who had an order of magnitude more commits and LOC than others and I was able to contact and get an affirmative response for authorship from 5 of the 6, so those are the ones I had listed for the JOSS publication. I was not able to get a response from Holger Nahrstaedt and so mentioned him and the other contributors in the acknowledgements instead.
Oddly, it seems that one of our top past contibutors, Kai Wohlfahrt (@kwohlfahrt) no longer shows up as a contributor on the GitHub page. I wonder why this is and if it could be a problem that occured when we recently had GitHub detach the repo from the deprecated github.com/nigma/PyWavelets repo? I assume this absence on GitHub is why he is also not present in the autogenerated Zenodo author list for v1.0.3.
I guess for now, I can manually edit the v1.0.3 release on Zenodo to match the author list here and add the appropriate ORCID IDs.
@rgommers: please see the prior comment on authorship. I'm curious if you have any idea why Kai's contributions are no longer visible?
No idea, that's very odd. If it's not a short glitch on GitHub's part, then it's worth opening a support issue about that I think.
Could you please update the Zenodo archive's author list to match the paper?
It's not a big deal but for the record: I don't really like this. Paper author do not have to match software authors as a rule; there are authors who choose not to participate, or who can't be reached for permission to put their name on the paper. Manually removing one of our major contributors from Zenodo only for v1.0.3 doesn't feel quite right.
:point_up: Cc: @openjournals/joss-eics
Manually removing one of our major contributors from Zenodo only for v1.0.3 doesn't feel quite right.
I would also prefer to be more inclusive rather than less on Zenodo. @jedbrown, did you raise the issue because Kai wasn't listed there but was in the paper author list or does it need to be a 1:1 match?
We normally ask for those lists to match. Note that JOSS reviews actually review the software, not just the paper. It sounds like there may be extenuating circumstances in this case. https://joss.readthedocs.io/en/latest/editing.html#after-acceptance
It sounds like there may be extenuating circumstances in this case
okay thanks @jedbrown, then I suggest we add back our one major contributor who is not on the paper.
Note that JOSS reviews actually review the software, not just the paper.
That doesn't really matter for who ends up being a paper author I would say. A JOSS paper is still a real academic paper with affiliations in it, so we can't just put people on that don't respond or don't want to be listed (I understand a match is desirable of course)
Pending any further feedback here, I added Holger (but not the full list of minor contributors) back to the author list for v1.0.3 on Zenodo for now. The first 5 authors listed there match the JOSS publication.
It's not a big deal but for the record: I don't really like this. Paper author do not have to match software authors as a rule; there are authors who choose not to participate, or who can't be reached for permission to put their name on the paper. Manually removing one of our major contributors from Zenodo only for v1.0.3 doesn't feel quite right.
JOSS assumes that the author list of the paper includes all major contributors. The paper is, after all, a _software paper_. As we state in the JOSS guidelines, it is up to the authors themselves to determine who should be credited with authorship. But you are right that authors should agree to be listed.
Zenodo grabs the author list automatically from all commits to the repo, and this usually bloats the list with folks who sent in a minor PR. It is rare (it's never come up before!) to have a major contributor who is not listed as an author in the paper.
@kwohlfahrt: If you would like to restore your commits to the contributors page again for PyWavelets, you will probably have to reach out to GitHub support. I got the following response from GitHub Support regarding their disappearance:
Thanks for reaching out! In looking at an older commit made by that user in the PyWavelets/pywt repository, it appears that the email address used to author their commits is no longer linked to a GitHub account at all:
https://github.com/PyWavelets/pywt/pull/59/commits/5831bbe89de12dfaa2385e71720cd4bc7fc196ed
This is probably because the user removed that email from their account, and since GitHub can no longer 'link' the commits properly it will in turn mean they won't appear as a contributor to the repository. If you are in contact with the user, you are welcome to have them write in to us here in support and we can work with them to get those contributions linked back up.
:point_up: Does GitHub not support .mailmap files (https://github.com/git/git/blob/master/.mailmap)?
It is rare (it's never come up before!) to have a major contributor who is not listed as an author in the paper.
Interesting, thanks @labarba. It probably reflects that the vast majority of packages are young, modest in size and with few authors. For larger projects with a long history it's unlikely that all significant contributors are still active, can be reached and want to be listed. E.g. the SciPy paper we are finalizing right now will miss lots of names, it's unavoidable with a 15 year history and 700+ contributors. PyWavelets is not that large, but is 10+ years old.
Does GitHub not support .mailmap files (https://github.com/git/git/blob/master/.mailmap)?
Good suggestion, worth a try at least. We have a manual name mapping for release notes that we can easily convert to .mailmap: https://github.com/PyWavelets/pywt/blob/master/util/authors.py#L27
For larger projects with a long history it's unlikely that all significant contributors are still active, can be reached and want to be listed.
In that case, a "best effort" approach should be made. Any contributors from long-ago who cannot be reached or who do not want to be authors can be listed in a long acknowledgement. The Zenodo author list should match the paper, as it is an archive deposit of the software associated with the software publication.
In that case, a "best effort" approach should be made. Any contributors from long-ago who cannot be reached or who do not want to be authors can be listed in a long acknowledgement. The Zenodo author list should match the paper, as it is an archive deposit of the software associated with the software publication.
A "best effort" was already made for the top 6 authors (who account for ~95% of the total commits). I got an affirmative response from 5 of the 6 (~90% of total commits) and included these in the JOSS paper author list.
It sounds like you are insisting that we should only include the 5 JOSS paper authors for the 1.0.3 tag on Zenodo.
@rgommers: Are you okay with this? There should not be a restriction on going back to the full contributor list for future releases.
I did write in the release notes for 1.0.3 that it was archived specifically to correspond to this publication:
"PyWavelets 1.0.3 is functionally equivalent to the 1.0.2 release. It was made to archive the JOSS paper about PyWavelets to the 1.0.x branch and serve as a reference corresponding to the version that was peer reviewed."
Perhaps a reasonable compromise is to edit that text on Zenodo to append an acknowledgement to all other contributrs to PyWavelets (potentially with a full list of names). That allows all names to be listed, just not as part of the official citation.
@rgommers: Are you okay with this? There should not be a restriction on going back to the full contributor list for future releases.
As I said in my first post it's not a very big deal, so if the editors insist then I'm fine with it.
Perhaps a reasonable compromise is to edit that text on Zenodo to append an acknowledgement to all other contributrs to PyWavelets (potentially with a full list of names). That allows all names to be listed, just not as part of the official citation.
That sounds like a good idea. And then for future releases we go back to the default Zenodo behavior.
Does GitHub not support .mailmap files (https://github.com/git/git/blob/master/.mailmap)?
We just added a .mailmap file in PyWavelets/pywt#485. This did clean up the output of git shortlog nicely, but does not appear to be used by GitHub itself.
Good to know (if unfortunate) regarding .mailmap.
Please see the updated Zenodo entry. The author list there now matches the publication.
https://zenodo.org/record/2634243#.XK9g7UN7kQ8
@whedon set v1.0.3 as version
OK. v1.0.3 is the version.
@whedon set 10.5281/zenodo.2634243 as archive
OK. 10.5281/zenodo.2634243 is the archive.
@whedon accept
Attempting dry run of processing paper acceptance...
PDF failed to compile for issue #1237 with the following error:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 16 0 16 0 0 319 0 --:--:-- --:--:-- --:--:-- 326
sh: 44: Syntax error: newline unexpected
Looks like we failed to compile the Crossref XML
```Reference check summary:
OK DOIs
MISSING DOIs
INVALID DOIs
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@labarba Do you know how to debug the crossref issue?
@whedon accept
Attempting dry run of processing paper acceptance...
PDF failed to compile for issue #1237 with the following error:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 16 0 16 0 0 200 0 --:--:-- --:--:-- --:--:-- 202
sh: 44: Syntax error: newline unexpected
Looks like we failed to compile the Crossref XML
```Reference check summary:
OK DOIs
MISSING DOIs
INVALID DOIs
@whedon accept
Attempting dry run of processing paper acceptance...
```Reference check summary:
OK DOIs
MISSING DOIs
INVALID DOIs
PDF failed to compile for issue #1237 with the following error:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 16 0 16 0 0 486 0 --:--:-- --:--:-- --:--:-- 500
sh: 44: Syntax error: newline unexpected
Looks like we failed to compile the Crossref XML
I have no clue what is going on โ @arfon, do you?
Looks like Whedon doesn't like apostrophes in names (this feels like a new bug as I don't think I've seen it before). Short term fix here: https://github.com/PyWavelets/pywt/pull/487
Thanks @arfon. I merged your PR. Can you check if Whedon is happy now?
@whedon accept
Attempting dry run of processing paper acceptance...
```Reference check summary:
OK DOIs
MISSING DOIs
INVALID DOIs
Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/619
If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/619, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.
@whedon accept deposit=true
@whedon accept deposit=true
Doing it live! Attempting automated processing of paper acceptance...
๐จ๐จ๐จ THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! ๐จ๐จ๐จ
Here's what you must now do:
Party like you just published a paper! ๐๐๐ฆ๐๐ป๐ค
Any issues? notify your editorial technical team...
Congratulations, @grlee77, your JOSS paper is published! ๐
Big thanks to our editor: @jedbrown, and reviewers: @rafat, @souopgui โ your contribution is valued by all of us! ๐
: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 snippets:
Markdown:
[](https://doi.org/10.21105/joss.01237)
HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.01237">
<img src="http://joss.theoj.org/papers/10.21105/joss.01237/status.svg" alt="DOI badge" >
</a>
reStructuredText:
.. image:: http://joss.theoj.org/papers/10.21105/joss.01237/status.svg
:target: https://doi.org/10.21105/joss.01237
This is how it will look in your documentation:
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: