Submitting author: @raamana (Pradeep Reddy Raamana)
Repository: https://github.com/raamana/pyradigm
Version: v0.3.0.3
Editor: @arokem
Reviewer: @ahwillia
Archive: 10.5281/zenodo.888108
Status badge code:
HTML: <a href="http://joss.theoj.org/papers/c5c231486d699bca982ca7ebd9cf32d2"><img src="http://joss.theoj.org/papers/c5c231486d699bca982ca7ebd9cf32d2/status.svg"></a>
Markdown: [](http://joss.theoj.org/papers/c5c231486d699bca982ca7ebd9cf32d2)
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.)
@ahwillia, 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 @arokem know.
paper.md file include a list of authors with their affiliations?Hello human, I'm @whedon. I'm here to help you with some common editorial tasks for JOSS. @ahwillia 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:


For a list of things I can do to help you, just type:
@whedon commands
@arokem - is this the appropriate place for me to ask any questions to you?
At the moment, I'm wondering if I should limit the review narrowly to the checkboxed above or if more long form suggestions are welcome. For example, I think it would be nice if this package was compatible with Python 3+, and it shouldn't take that much effort to make that happen. Is that a reasonable request from the standpoint of JOSS? I feel a bit odd opening issues for these sorts of suggestions on the target repo.
Thanks for walking me through this.
Hi Alex,
Thank you for your time to review this and the positive support for the ideas and motivation for this project. Much appreciate it. I'm looking forward see your ideas and suggestions for how to improve its value and interoperability with other tools and packages.
Support for python 3+ is certainly on my TODO list, perhaps I should note it on the repo itself in its roadmap. It's just limited by my time or contributions from others interested.
In fact, I already have given it a try few weeks ago, either it's not so simple or I need to up my python module packaging and version compatibility game. If you have clear suggestions, I'll happily follow the suggestions, provided they wouldn't need take way too long.
It's a great suggestion for improvement, but I'm not sure if that's a requirement for acceptance. Perhaps @arokem can clarify.
Yep - I'm not a fan of requirements and reviewer gate keeping, but was trying to figure out the scope of things acceptable to comment on and suggest. I guess my question is whether a repo is "accepted" once I click all the boxes, or if I am expected to also make high-level suggestions and criticisms that the editor decides are either necessary or not. (The latter would be a more conventional review process.)
Shame to hear that Python3 wasn't straightforward to implement. But that's a minor comment anyways.
I'll try to block off an afternoon later this week to do the review in full. I'm just trying to feel out exactly what has to be done so I can finish it in one go.
To my understanding, @arokem can correct me if I am wrong, if you tick all the questions off (implying the questions therein are answered), I believe it will be accepted. However, the key section for your concerns in Functionality - where "Have the functional claims of the software been confirmed?" touches on the Python 3 compatibility. If pyradigm were to claim compatibility for python 3+ (which it doesn't) and fail to satisfy that, then it needs to be addressed.
I just updated the README to clarify this.
Thanks for submitting this @raamana! Most of this looks good, and +1 for positive and negative tests.
I do have a couple comments after a quick review this morning:
I'll try to put in more time for review later this week.
Thanks Scott. Full docs is definitely at the top of my plan. I will wait for comments from all the reviewers, esp. regarding the API and interoperability etc, to finalize the API, and document it thoroughly.
Let me answer the next two points shortly.
So I have updated the README and contribution guidelines as @stsievert suggested, take a look. Perhaps you can tick off the issues for the review as you see them done/to-be-done.
I will wait for @ahwillia's comments (and Scott's if any) before starting to document the API - this is one area all of your comments will be helpful.
Hi everyone!
@ahwillia : this is the place to ask me questions, though as you can see, it might take me a little while to answer...
At any rate, thanks for starting the discussion here. Let me see if I can answer the questions that have come up so far: extending support to Python 3 is not a requirement for publication, but I do agree that it would improve the software, so worth consider doing now that you are responding to a lot of external reviews.
On the other hand, documentation is a requirement, so you would have to address https://github.com/raamana/pyradigm/issues/2.
Thanks again, and please keep me in the loop as you go through the requirements. Either @ahwillia and @stsievert can tick the boxes above, but I will ask that you both also explicitly approve the submission at the end of the process.
@raamana - I'm okay to sign off on this once you address @stsievert's comments. Fixing up the documentation and giving a clear statement of purpose (with comparison to pandas and cross-validation tools in scikit-learn) are the top priority issues.
You can treat everything below as a suggestion.
The example notebook is good but a bit long. It would be really helpful to new users if you could compartmentalize the functionality. In particular, the table of contents could have more direct headings, such as:
Is "dataset" the right name? What about dataframe or datatable? This is what pandas / pytables call them...
Saving datasets in HDF5 or Feather format would be really helpful. I am always looking for a better way to save and reload datasets, because I'm too impatient to learn h5py. Pickling has well-documented issues, so packages that make these other formats easily accessible are a big plus.
It seems like the user needs export their data using the dataset.data_and_labels() command in order to use scikit-learn? It seems like that slightly defeats the purpose of the package. Since scikit-learn has a very strict API, would it make sense to fit models internally within the dataset object? Something like:
python
from sklearn import svm
dataset.fit_model(svm.SVC(gamma=0.001, C=100.))
Y = dataset.predict()
I could see this getting tricky and beyond the scope of the current submission (e.g. what happens if you fit multiple models? Do you just delete the last one). Anyways, just a thought I had.
Thanks Alex - very useful comments.
Except for detailed API documentation, I think I've already addressed @stsievert's comments. I think he wants to take another pass to review this.
One thing I'd like @stsievert and @ahwillia to really give it a serious thought is on API. How can we improve it to ease your ML workflow on a daily/weekly basis?
I will get back to you soon with improved API docs
How can we improve API to ease your ML workflow on a daily/weekly basis?
I don't think I'm the right person to ask, as I'm not used to dealing with datasets with very cumbersome metadata. Honestly, I don't even use pandas because working directly with numpy arrays serves my purposes. I also end up using a lot of nested dicts, which is maybe suboptimal, but this package doesn't appear to address that issue.
No problem, let me know as you get ideas, or when you choose to adopt this in your workflow.
I guess API documentation is the only thing holding the review back now? Can one of you tick off the boxes at the top for me to focus on what needs to be done? Thanks,
How can we improve API to ease your ML workflow on a daily/weekly basis?
Possible API improvements:
__contains__. If i in dataset, I would expect dataset[i] return the value.__get_subset_from_dictget_subsetglance: this is similar to Pandas df.head. Rename?summarize_classes is similar to Pandas df.describe. Rename?__del__ could be used to delete a sampledel_samplenum_features, you raise a warning if you set. Make it a function instead? You can not set a function value.MLDataset.__take__str_nameskeys_with_valueThese are all first-glance comments. Let me know how any of these comments can be improved.
I've gone through the checklist, and here are my findings (I can't edit the top comment)
[x] functionality. I need to test the last cell in [PyradigmExample.ipynb] about sklearn support.
[x] statement of need. There is one on the readme
[x] Community guidelines
[x] authors
Glad to update you guys that pyradigm now works on both 2.7 and 3.6, along with 3.5: https://travis-ci.org/raamana/pyradigm
Thanks again. Let me know if you guys need anything else to close the review.
Scott, thanks for the suggestions to improve the API. I will keep them in mind and improve the API in due course. Note the API must cater to non-expert programmers/users from neuro- or related fields (who know of datasets/samples etc, but never heard of pandas). I'm not targeting those who already know of or use pandas :)
@stsievert : IIUC - the reference in the paper is to a different, more neuro-specific project. That's fine.
@raamana : Regarding documentation of the software -- I don't think that the current documentation is sufficient. I would recommend adding a sphinx documentation website, including full reference documentation of the package and its API. If you want to automate documentation building on your CI, this is a good option: https://drdoctr.github.io/doctr/
Thanks for keeping the API comments in mind!
the reference in the paper is [...] different
Whoops -- that's what you get for skimming the URL.
I've finally tamed Sphinx to help me produce the docs : http://pyradigm.readthedocs.io/en/latest/
Thanks @arokem for the doctr tip, and I will try to use that too.
Is there anything else I need to do for the acceptance?
An older theme showed a nice table of attributes and methods at the top of the API reference page, using autosummary directive, which doesnt seem to work with the current theme or docs hosting service readthedocs. If you can help me get that to work, that'll be appreciated (my hours googling and hacking didn't work so far :) ).
Where does https://github.com/raamana/pyradigm/pull/8 stand?
Is this required for acceptance, @stsievert? Does your ๐ on previous comment mean that it's ready to go from your point of view?
@raamana : for the table, you mean something like this?
http://yeatmanlab.github.io/pyAFQ/reference/AFQ.html
Sorry - I am not exactly sure how that comes about. But feel free to copy the sphinx configuration from that project!
I just merged the PR https://github.com/raamana/pyradigm/pull/8
@arokem, yes. I gotten it for the older theme, but the shiny new (mobile-friendly) RTD theme doesn't seem to interact well with the autosummary directive. Its minor anyways - I might make a manual table later on, it would be ideal to have it automated. I will check their conf.
Is this required for acceptance, @stsievert? Does your ๐ on previous comment mean that it's ready to go from your point of view?
:+1: for review here -- I've checked all the boxes and am satisfied! In https://github.com/openjournals/joss-reviews/issues/382#issuecomment-327631871 I was giving a :+1: for documentation, not for review, but I am satisfied now.
Awesome. Thanks Alex, Scott and Ariel ๐, much appreciate your time and effort.
Let's hope pyradigm will find some users and the users will find it useful :)
Congratulations!
@raamana : Your next step is to make an archive from the current version (e.g., using Zenodo) and to post the DOI of the archive here.
Thank you, here is the DOI: 10.5281/zenodo.888108
@whedon set 10.5281/zenodo.888108 as archive
OK. 10.5281/zenodo.888108 is the archive.
@arfon: I believe this paper is publishable in its current form. Please let me know if we need to do anything else here.
@ahwillia - many thanks for your review here and to @arokem for editing this submission โจ
@raamana - your submission is now accepted into JOSS and your DOI is http://dx.doi.org/10.21105/joss.00382 โก๏ธ ๐ ๐ฅ
Thanks Arfon and Ariel :)
Thanks again to Scott @stsievert and Alex, who contributed to the review significantly.