Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REVIEW]: Autorank: A Python package for automated ranking of classifiers #2173

Closed
38 tasks done
whedon opened this issue Apr 10, 2020 · 42 comments
Closed
38 tasks done
Assignees
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review

Comments

@whedon
Copy link

whedon commented Apr 10, 2020

Submitting author: @sherbold (Steffen Herbold)
Repository: https://github.com/sherbold/autorank
Version: 1.0.0
Editor: @arfon
Reviewer: @JonathanReardon, @ejhigson
Archive: 10.5281/zenodo.3751301

Status

status

Status badge code:

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

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

@JonathanReardon & @ejhigson, 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 try and complete your review in the next two weeks

Review checklist for @JonathanReardon

Conflict of interest

  • 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

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@sherbold) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • 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

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • 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

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • 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?

Review checklist for @ejhigson

Conflict of interest

  • 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

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@sherbold) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • 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

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • 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

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • 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?
@whedon
Copy link
Author

whedon commented Apr 10, 2020

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

⭐ Important ⭐

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
Copy link
Author

whedon commented Apr 10, 2020

Reference check summary:

OK DOIs

- None

MISSING DOIs

- None

INVALID DOIs

- None

@whedon
Copy link
Author

whedon commented Apr 10, 2020

@arfon
Copy link
Member

arfon commented Apr 10, 2020

@JonathanReardon, @ejhigson - please carry out your review in this issue by updating the checklist above and giving feedback in this issue. The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html

Any questions/concerns please let me know.

@ejhigson
Copy link

Hi @sherbold - this is a really nice piece of software. I really like the idea and definitely see the practical usefulness!

Installing your package and starting playing around with it, I noticed a few things which could be changed or fixed - I will comment about them below.

@ejhigson
Copy link

  1. I think you need to add version requirements for you dependencies as I got errors running the example at https://sherbold.github.io/autorank/ which were fixed by upgrading the dependency module versions. E.g. with scipy 1.1 I get the following error:
AttributeError: module 'scipy.stats' has no attribute 'median_absolute_deviation'

Upgrading scipy to 1.4.1 fixed the issue. Perhaps you can consider specifying minimum version requirements for your dependencies in setup.py? E.g. "scipy>=1.4" or whatever the appropriate version is.

@ejhigson
Copy link

  1. Following this step in the example usage at https://sherbold.github.io/autorank/#documentation:
plot_stats(res)
plt.show()

I get the following error:

RuntimeError: latex was not able to process the following string:
b'pop_0'

I see similar errors when I try running the module tests with nosetests. Do you know what is causing these errors?

You may also want to change the code in this cell at https://sherbold.github.io/autorank/#documentation to use the variable name "results" instead of "res" for consistency with earlier cells, and to have an "import matplotlib.pyplot as plt" statement.

For reference, I am using python 3.6.9 with these module versions:

matplotlib                        3.2.1               
pandas                            1.0.3               
scipy                             1.4.1               

My laptop is running Ubuntu 18, and my latex version is:

$ latex --version
pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian)
kpathsea version 6.2.3
Copyright 2017 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.34; using libpng 1.6.34
Compiled with zlib 1.2.11; using zlib 1.2.11
Compiled with poppler version 0.62.0

@ejhigson
Copy link

  1. I think there may be a typo in your flow chart as both arrows leaving the "Two populations?" diamond say "Yes". Should one of them say "No"?

@ejhigson
Copy link

ejhigson commented Apr 11, 2020

  1. Regarding the paper itself: I think there is a typo in the last sentence of the third paragraph "Instead, additional aspect such as effect sizes, confidence intervals, and the decision whether it is appropriate to report the mean value and standard deviation, or whether the median value and the median absolute deviation are better suited". Also you may wish to add DOIs to your references.

@sherbold
Copy link

@whedon generate pdf

@sherbold
Copy link

@ejhigson Thanks for the good feedback. I fixed 1, 3, and 4. Unfortunately, neither arXiv, nor JLMR have DOIs. Why this is a case for JLMR is a mystery for me.

Regarding 2: I fixed the documentation. They are not updated yet, because GH Actions seem to be broken right now, though there is no incident report filed yet.

However, I cannot replicate any test failures. I ran the tests under Windows and Ubuntu 18.04 and did not see anything. I am waiting for the GH actions to become live again, there tests are running there as well.

Or do you see the error, when you try to compile the generated latex code?

@whedon
Copy link
Author

whedon commented Apr 11, 2020

@sherbold
Copy link

sherbold commented Apr 11, 2020

The documentation is now also updated. I also did some maintenance of the Github Action and documentation build, because there were breaking changes in the latest releases.

I will release 1.0.1 once I addressed all review comments. I can release this earlier, if you want to try from scratch with the latest version from PyPi.

@ejhigson
Copy link

However, I cannot replicate any test failures. I ran the tests under Windows and Ubuntu 18.04 and did not see anything. I am waiting for the GH actions to become live again, there tests are running there as well.

Or do you see the error, when you try to compile the generated latex code?

@sherbold I found the source of the problem. The error was in the creation of matplotlib figures not the generated latex. I had specified the matplotlib parameter text.usetex as True in my matplotlibrc but it seems your example and tests require text.usetex = False to run. With this matplotlib setting then everything works perfectly for me. You could perhaps consider adding a statement to check the matplotlib rc parameter text.usetex is set to False and, if not, to issue a UserWarning or similar to tell people they need to change it.

@ejhigson
Copy link

Here are a few other minor suggestions before I finish my review (sorry any of the below already exist and I have missed them):

  1. please could you document how to run your tests in your documentation page? I tried running with nosetests and everything worked great but I think it is worth stating how to do this.
  2. the API documentation in the docstrings is very good. Perhaps its worth explicitly suggesting in your documentation page that people look at it for more details?
  3. One of the review criteria for the paper itself is "State of the field: Do the authors describe how this software compares to other commonly-used packages?" I don't think you mention any other similar software packages. Do any exist? If not then this is fine.

@sherbold
Copy link

Thanks for the additional comments. I addressed them as follows:

  • I added a UserWarning that shows when autorank is important if text.usetex==True. I am thinking about adding an additional UserWarning to plot_stats as well. But I will likely find the source for the problem with usetex at some point.
  • I added a short guide for devs, including test execution: https://github.com/sherbold/autorank#creating-a-local-developer-environment
  • I changed the link to specifically point to the API-Doc. The remainder of the documentation is the README anyways.
  • I added a statement how autorank is different from other statistical packages using scipy as example.

@sherbold
Copy link

@whedon generate pdf

@whedon
Copy link
Author

whedon commented Apr 12, 2020

@ejhigson
Copy link

@sherbold thank you for these changes! Everything looks great to me. Congratulations on making a really neat piece of software.

@JonathanReardon
Copy link

Hi @sherbold, what a useful tool, I can see this getting a lot of use. I've finished my review and I only have two minor (aesthetic) points:

The 'print(result)' output [https://sherbold.github.io/autorank/] does not display accurately. For me the 'RankResult(rankdf=' displays on the same line as the column titles and so shifts all titles to the right, making the overall display less clear. The bottom part of the output does not display clearly either (example below):

RankResult(rankdf= meanrank median mad ci_lower ci_upper effect_size
pop_5 2.18 0.912005 0.130461 0.692127 1 2.66454e-17
pop_4 2.29 0.910437 0.132786 0.654001 1 -0.024
pop_3 2.47 0.858091 0.210394 0.573879 1 0.1364
pop_2 3.95 0.505057 0.333594 0.227184 0.72558 0.6424
pop_1 4.71 0.313824 0.247339 0.149473 0.546571 0.8516
pop_0 5.40 0.129756 0.192377 0 0.349014 0.9192

      magnitude  
pop_5 negligible
pop_4 negligible
pop_3 negligible
pop_2 large
pop_1 large
pop_0 large , pvalue=2.3412212612346733e-28, cd=1.0662484349869374, omnibus='friedman', 
posthoc='nemenyi', all_normal=False, pvals_shapiro=[1.646607051952742e-05, 
0.0605173334479332, 0.13884511590003967, 0.00010030837438534945, 
2.066387423838023e-06, 1.5319776593969436e-06], homoscedastic=True, 
pval_homogeneity=0.2663177301695518, homogeneity_test='levene', alpha=0.05, 
alpha_normality=0.008333333333333333, num_samples=50)

I got this same output using a Jupyter Notebook, Ipython3 (at the terminal), and using VSCodium.

@JonathanReardon
Copy link

There is also a missing word in the 'output' example (https://sherbold.github.io/autorank/). In the last sentence I think it should be 'Based on the post-hoc Nemenyi test' rather than 'Based the post..'.

@sherbold
Copy link

Thank you @JonathanReardon . I have overwritten the namedtuple with a customized str function. The output now uses newlines and looks as follows:

RankResult(rankdf=
       meanrank    median       mad  ci_lower  ci_upper  effect_size  \
pop_5      2.18  0.912005  0.130461  0.692127         1  2.66454e-17   
pop_4      2.29  0.910437  0.132786  0.654001         1       -0.024   
pop_3      2.47  0.858091  0.210394  0.573879         1       0.1364   
pop_2      3.95  0.505057  0.333594  0.227184   0.72558       0.6424   
pop_1      4.71  0.313824  0.247339  0.149473  0.546571       0.8516   
pop_0      5.40  0.129756  0.192377         0  0.349014       0.9192   

        magnitude  
pop_5  negligible  
pop_4  negligible  
pop_3  negligible  
pop_2       large  
pop_1       large  
pop_0       large  
pvalue=2.3412212612346733e-28
cd=1.0662484349869374
omnibus=friedman
posthoc=nemenyi
all_normal=False
pvals_shapiro=[1.646607051952742e-05, 0.0605173334479332, 0.13884511590003967, 0.00010030837438534945, 2.066387423838023e-06, 1.5319776593969436e-06]
homoscedastic=True
pval_homogeneity=0.2663177301695518
homogeneity_test=levene
alpha=0.05
alpha_normality=0.008333333333333333
num_samples=50)

I also fixed the typo with the Nemenyi test.

I did not find the missing 'output'. Could you tell me exactly where to look? I seem to be typo-blind.

@JonathanReardon
Copy link

Thank you for making these changes @sherbold. The missing word in the example 'create_report(result)' output was the part you already corrected, sorry for the slight lack of clarity there on my part :)

My review is now complete, all boxes ticked. Congratulations on a great piece of software, I look forward to seeing it published and widely used.

Cheers

@sherbold
Copy link

Thank you both @ejhigson and @JonathanReardon for the fast reviews and the helpful comments that really improved the tool and documentation again. The changes were small, but the impact in terms of user experience should be large :)

@arfon
Copy link
Member

arfon commented Apr 14, 2020

@sherbold - could you merge this fix to one of the DOIs? sherbold/autorank#2

@sherbold
Copy link

@arfon done :)

@arfon
Copy link
Member

arfon commented Apr 14, 2020

@whedon generate pdf

@whedon
Copy link
Author

whedon commented Apr 14, 2020

@arfon
Copy link
Member

arfon commented Apr 14, 2020

@sherbold - At this point could you make a new release of this software that includes the changes that have resulted from this review. Then, please make an archive of the software in Zenodo/figshare/other service and update this thread with the DOI of the archive? For the Zenodo/figshare archive, please make sure that:

  • The title of the archive is the same as the JOSS paper title
  • That the authors of the archive are the same as the JOSS paper authors

I can then move forward with accepting the submission.

@sherbold
Copy link

Version 1.0.1 with all changes is released and available on PyPi: https://pypi.org/project/autorank/1.0.1/

There is also a long-term archive of 1.0.1 on Zenodo:
https://doi.org/10.5281/zenodo.3751301

@arfon Thank you for taking over and the fast process. I also want to stress how much I like the approach by JOSS and look forward to contributing back to the journal at some point, when things get back to (more) normal :)

@arfon
Copy link
Member

arfon commented Apr 14, 2020

@whedon set 10.5281/zenodo.3751301 as archive

@whedon
Copy link
Author

whedon commented Apr 14, 2020

OK. 10.5281/zenodo.3751301 is the archive.

@arfon
Copy link
Member

arfon commented Apr 14, 2020

@whedon accept

@whedon whedon added the recommend-accept Papers recommended for acceptance in JOSS. label Apr 14, 2020
@whedon
Copy link
Author

whedon commented Apr 14, 2020

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented Apr 14, 2020

Reference check summary:

OK DOIs

- 10.1038/s41592-019-0686-2 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@whedon
Copy link
Author

whedon commented Apr 14, 2020

👋 @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof 👉 openjournals/joss-papers#1420

If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#1420, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true

@arfon
Copy link
Member

arfon commented Apr 14, 2020

@whedon accept deposit=true

@whedon whedon added accepted published Papers published in JOSS labels Apr 14, 2020
@whedon
Copy link
Author

whedon commented Apr 14, 2020

Doing it live! Attempting automated processing of paper acceptance...

@whedon
Copy link
Author

whedon commented Apr 14, 2020

🐦🐦🐦 👉 Tweet for this paper 👈 🐦🐦🐦

@whedon
Copy link
Author

whedon commented Apr 14, 2020

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited 👉 Creating pull request for 10.21105.joss.02173 joss-papers#1421
  2. Wait a couple of minutes to verify that the paper DOI resolves https://doi.org/10.21105/joss.02173
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! 🎉🌈🦄💃👻🤘

Any issues? notify your editorial technical team...

@arfon
Copy link
Member

arfon commented Apr 14, 2020

@JonathanReardon, @ejhigson - many thanks for your reviews here ✨

@sherbold - your paper is now accepted into JOSS ⚡🚀💥

@arfon Thank you for taking over and the fast process. I also want to stress how much I like the approach by JOSS and look forward to contributing back to the journal at some point, when things get back to (more) normal :)

Sure thing!

@arfon arfon closed this as completed Apr 14, 2020
@whedon
Copy link
Author

whedon commented Apr 14, 2020

🎉🎉🎉 Congratulations on your paper acceptance! 🎉🎉🎉

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

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

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.02173">
  <img src="https://joss.theoj.org/papers/10.21105/joss.02173/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.02173/status.svg
   :target: https://doi.org/10.21105/joss.02173

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:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review
Projects
None yet
Development

No branches or pull requests

5 participants