-
-
Notifications
You must be signed in to change notification settings - Fork 41
[REVIEW]: pyCeterisParibus: explaining Machine Learning models with Ceteris Paribus Profiles in Python #1389
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
Comments
Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @janfreyberg, it looks like you're currently assigned as the reviewer for 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:
For a list of things I can do to help you, just type:
|
|
Overview: pyCeterisParibus is a library for explaining machine learning models with ceteris paribus profiles. These are useful for adding to visual story telling and supporting model interpretability. The idea is great, the implementation is clean, and I may use it in some of my projects. Some minor improvements are suggested below. Installation: Installed without issues via pip and local copy of the source code. Functionality: I was able to run the example on my Mac, but was not able to load the plot, due to an issue with how file paths are handled on Macs. I have opened a pull request at ModelOriented/pyCeterisParibus#24 fixing this issue on my machine. After this is accepted or otherwise addressed I will consider it completed. Performance: No measure of performance is given, but the model loaded fast on the Titanic dataset. Documentation: The explanation for how the model works could be improved. For example, in the paper the author's write "For this purpose, methods for sampling and selecting neighbouring observations are implemented along with the Gower's distance [@gower] function. A more detailed description might be found in the package documentation." I was not able to find description of Gower's distance in the linked to readthedocs. Adding details of how the model works would be helpful for people who are not familiar with Gower's distance or how it applies to machine learning models. Software Paper: The software paper has a few minor typos or questionable stylistic choices for an academic paper:
Example Usage: The notebooks and example scripts without problems. References: Every reference mentioned in the paper is documented as BibTex entries. |
@JustinShenk Great thanks for all these valuable remarks! I merged your pull request. Also, I applied your comments referred to the paper and put the Gower's distance description in the documentation. I'll solve the scrollbar problem (ModelOriented/pyCeterisParibus#23) as fast as possible. |
@whedon generate pdf |
|
@kmichael08 Thanks for the quick response and edits. @katyhuff My review (#1389 (comment)) is now complete. |
InstallationInstalling the package in a fresh docker alpine image leads to dependencies being installed that I don't think need to be, for example sphinx, m2r, codecov, etc. There are a few ways around this so I haven't made a PR but I think you can do the following: Split requirements into actual requirements (what's needed to run the package), documentation requirements, and test requirements (e.g. pytest). You can add these as additional requirements using the extras_require key in setup.py, or simply install them from txt files wherever you need them. Additionally, as far as I can tell tensorflow is never imported and so should be removed from the requirements. I would even go so far as to say XGBoost and sklearn should not be in the requirements, even though you use it in the paper and documentation, becuase it's not essential to the functioning of the package. Instead, you could make a note that people should install them to run the examples. Otherwise, installation works great. Functionality / PerformanceThis all worked great for me. DocumentationI think the docs can be improved:
But that's just a recommendation. PaperThe paper is very good. Only point: the R package CeterisParibus is not included in the references. |
Thanks for the speedy reviews, @janfreyberg @JustinShenk . And, thanks for responding quickly to the suggestions @kmichael08 . @kmichael08 , there are a few items in @janfreyberg's review that will need to be handled before we should move forward with acceptance:
The rest of the comments from @janfreyberg would certainly clean things up, but aren't explicitly need for our JOSS requirements, so I'll just recommend that you consider the recommendation from @janfreyberg : "Split requirements into actual requirements (what's needed to run the package), documentation requirements, and test requirements (e.g. pytest). You can add these as additional requirements using the extras_require key in setup.py, or simply install them from txt files wherever you need them.... I would even go so far as to say XGBoost and sklearn should not be in the requirements, even though you use it in the paper and documentation, becuase it's not essential to the functioning of the package. Instead, you could make a note that people should install them to run the examples." I have looked over the package and have found it installs pretty easily. Once you've seen this message @kmichael08 and implemented the two above changes, please ping me and we'll move on with next steps. |
@whedon generate pdf |
|
Thanks a lot @janfreyberg and @katyhuff!
So, as far as this two sounds ok for you, we can move on. I'll definitely enhance the docs soon and use sphinx-jupyter. Thanks for that! |
@whedon generate pdf |
|
@whedon check references |
|
|
@kmichael08 I'm going through some of the final checks (first up, the bibliography):
|
Weird. If I change the bib file field to:
Then it seems to compile OK. Changing the flag to |
@whedon generate pdf |
|
@katyhuff I updated repository to the v0.5.2 and archived it in Zenodo. |
@whedon set 10.5281/zenodo.2667756 as archive |
OK. 10.5281/zenodo.2667756 is the archive. |
@whedon accept |
|
PDF failed to compile for issue #1389 with the following error: % Total % Received % Xferd Average Speed Time Time Time Current 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 |
|
@whedon accept |
|
|
Check final proof 👉 openjournals/joss-papers#662 If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#662, then you can now move forward with accepting the submission by compiling again with the flag
|
@whedon accept deposit=true |
|
🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨 Here's what you must now do:
Any issues? notify your editorial technical team... |
@kyleniemeyer @arfon Thanks for jumping forward with the submission. That said, I didn't get a chance to execute the whedon set version command in time to beat you to that accept function! Usually, that's part of my task list at this stage -- do we need to fix and re-accept? That is, the submission was v0.5, but, at my request, the author updated the version when creating the archive release, to reflect the version that includes joss-related changes. The new version, to be incorporated in the JOSS publication, is v0.5.2, so I would usually have run |
Sorry my/our bad - looks like we got ahead of ourselves here. The version isn't actually captured in the paper so please go ahead and update that here. |
Also, please note, Crossref is still having some issues so this DOI doesn't resolve yet. |
@whedon set v0.5.2 as version |
OK. v0.5.2 is the version. |
So (@arfon @kyleniemeyer ) do we just run accept again? |
There's no need to because the version isn't captured anywhere other than here. The archive DOI is correct right? (This is linked to in the paper) |
#fancy . |
@katyhuff sorry for rushing your process... just trying to help get this one wrapped up! |
Just to let you know, the DOI is now resolving properly. |
Wonderful! Thanks for everyone engaged in the process: reviews, editing and the super fast finish. |
🎉🎉🎉 Congratulations on your paper acceptance! 🎉🎉🎉 If you would like to include a link to your paper from your README use the following code snippets:
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:
|
Submitting author: @kmichael08 (Michał Kuźba)
Repository: https://github.com/ModelOriented/pyCeterisParibus
Version: v0.5.2
Editor: @katyhuff
Reviewer: @janfreyberg, @JustinShenk
Archive: 10.5281/zenodo.2667756
Status
Status badge code:
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
@janfreyberg & @JustinShenk, 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 @katyhuff know.
✨ Please try and complete your review in the next two weeks ✨
Review checklist for @janfreyberg
Conflict of interest
Code of Conduct
General checks
Functionality
Documentation
Software paper
paper.md
file include a list of authors with their affiliations?Review checklist for @JustinShenk
Conflict of interest
Code of Conduct
General checks
Functionality
Documentation
Software paper
paper.md
file include a list of authors with their affiliations?The text was updated successfully, but these errors were encountered: