Repository navigation
pyrolite Submission #20
Description
Submitting Author: Morgan Williams (@morganjwilliams)
All current maintainers: Morgan Williams (@morganjwilliams)
Package Name: pyrolite
One-Line Description of Package: A set of tools for getting the most from your geochemical data.
Repository Link: https://github.com/morganjwilliams/pyrolite
Version submitted: 0.2.5
Editor: @lwasser
Reviewer 1: @rbeucher
Reviewer 2: @charlesll
Archive:
JOSS DOI:
Version accepted: v 0.2.7
Date accepted (month/day/year): 06/04/2020
Description
- Include a brief paragraph describing what your package does:
pyrolite provides tools for munging, transforming and visualising geochemical data from common tabular formats. It enables you to recalculate and rescale whole-rock and mineral compositions, perform compositional statistics and create appropriate visualisations and also includes numerous specific utilities (e.g. a geological timescale).
Scope
-
Please indicate which category or categories this package falls under:
- Data retrieval
- Data extraction
- Data munging
- Data deposition
- Reproducibility
- Geospatial
- Education
- Data visualization*
-
Explain how the and why the package falls under these categories (briefly, 1-2 sentences):
pyrolite leverages Pandas to enable import, munging and transformation of geochemical data from standard tabular formats, and matplotlib to facilitate common (and some less common) geochemical visualisations. One of the principal project aims is assisting to improve the reproducibility of geochemical research (especially for data-processing steps which often are overlooked or undocumented).
With regards to education, pyrolite is well suited to being incorporated into university-level geochemistry and petrology classes which wish to teach a little Python. The documentation is continually evolving, and more examples and tutorials will gradually be added. It isn't a principal aim of the project, however.
- Who is the target audience and what are scientific applications of this package?
pyrolite is targeted towards geochemists and geoscientists who use geochemical data (chemistry, mineralogy and relevant properties), especially those using lithogeochemistry. pyrolite has been developed principally to enable more reproducible data import, munging, transformation and visualization for geochemical data. In addition to this, pyrolite:
-
Encourages better practices throughout these processes, including the use of compositional statistics (i.e. log-transforms).
-
Implements some common geochemical models and methods to make these easily accessible and reusable (e.g. lattice strain models, orthogonal polynomial decomposition of Rare Earth Element patterns - 'lambdas').
-
Contains a small database of rock forming minerals for normative calculations and looking up mineral formulae.
Extensions beyond the core package are also being developed for specific applications or interfaces (e.g. to alphaMELTS).
- Are there other Python packages that accomplish the same thing? If so, how does yours differ?
There is at least one other Python package which has some minor overlap for visualisations (GeoPyTool, which has a GUI-focused interface), but generally there are few open source Python packages for geochemistry (especially on PyPI). pyrolite provides some broader functionality (for both plotting and handling geochemistry) and is designed to be used from an editor or terminal and encourage geoscientists to further develop transferable Python skills. Where practical, the APIs for the tools on which it is built are exposed (e.g. pandas, matplotlib and sklearn).
- If you made a pre-submission enquiry, please paste the link to the corresponding issue, forum post, or other discussion, or
@tagthe editor you contacted:
Technical checks
For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:
- does not violate the Terms of Service of any service it interacts with.
- has an OSI approved license
- contains a README with instructions for installing the development version.
- includes documentation with examples for all functions.
- contains a vignette with examples of its essential functions and uses.
- has a test suite.
- has continuous integration, such as Travis CI, AppVeyor, CircleCI, and/or others.
Publication options
- Do you wish to automatically submit to the Journal of Open Source Software? If so:
JOSS Checks
- The package has an obvious research application according to JOSS's definition in their submission requirements. Be aware that completing the pyOpenSci review process does not guarantee acceptance to JOSS. Be sure to read their submission requirements (linked above) if you are interested in submitting to JOSS.
- The package is not a "minor utility" as defined by JOSS's submission requirements: "Minor ‘utility’ packages, including ‘thin’ API clients, are not acceptable." pyOpenSci welcomes these packages under "Data Retrieval", but JOSS has slightly different criteria.
- The package contains a
paper.mdmatching JOSS's requirements with a high-level description in the package root or ininst/. - The package is deposited in a long-term repository with the DOI: 10.5281/zenodo.2545106
Note: Do not submit your package separately to JOSS
Are you OK with Reviewers Submitting Issues and/or pull requests to your Repo Directly?
This option will allow reviewers to open smaller issues that can then be linked to PR's rather than submitting a more dense text based review. It will also allow you to demonstrate addressing the issue via PR links.
- Yes I am OK with reviewers submitting requested changes as issues to my repo. Reviewers will then link to the issues in their submitted review.
Code of conduct
- I agree to abide by pyOpenSci's Code of Conduct during the review process and in maintaining my package should it be accepted.
P.S. Have feedback/comments about our review process? Leave a comment here
Editor and Review Templates
Metadata
Metadata
Assignees
Type
Projects
- StatusShow more project fieldsjoss-accepted
Activity
lwasser commentedon Mar 26, 2020
Editor's Template
Editor checks:
Editor comments
The license is a variant on BSD / MIT -- Chat with RO about this...
Reviewers:
Due date: Thursday April, 30th
hi @morganjwilliams just a note that i have this review on my radar and will get going with finding an editor and reviewers shortly. Everything has slowed down a lot in the past month with the current events. Thank you for your patience!
morganjwilliams commentedon Mar 27, 2020
Thanks @lwasser, I hope you're faring well! I've asked one potential reviewer, and will tag them here shortly if they're interested.
morganjwilliams commentedon Apr 7, 2020
Hi @lwasser, just a quick update - @charlesll has indicated he's interesting in reviewing this.
lwasser commentedon Apr 7, 2020
oh wonderful! thank ou @morganjwilliams let me put a ping out on twitter for a second reviewer while we wait for @charlesll to respond! thank you
rbeucher commentedon Apr 8, 2020
Happy to help if you are still looking for a reviewer
charlesll commentedon Apr 8, 2020
Hi, I can review this package. Let me know what is the protocol. Thanks!
lwasser commentedon Apr 8, 2020
oh awesome!! thank you @rbeucher and @charlesll !! i'll add you as reviewers. so here is how it goes
The review guidelines can be found here. read them over. I need to update that document to contain more recieve pyopensci reviews. when we started we only had ropensci as a model.
When you have completed your review - use the review template so submit your review.
we typically ask for a 3 week turn around on reviews. So if it is possible to complete your review by Thursday April, 30th that would be perfect.
At pyopensci we offer the option of including issues that you open as a part of your review that are then addressed through the review. @morganjwilliams has opted to allow this so feel free to submit issues (or pr's) as need be to address things.
Also he has opted to be considered for JOSS. So when we get to that step, we will ask you to have a look at the paper and ensure the package meets the JOSS requirements. we can discuss that as we are further along.
Thank you both for being willing to review this submission. Please get in touch at any point if you have questions OR suggestions. We are still refining our process so we have been tweaking things in each review.
rbeucher commentedon Apr 8, 2020
Thanks @lwasser ,
rbeucher commentedon Apr 29, 2020
Hi, please find my review below:
Package Review
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
Documentation
The package includes all the following forms of documentation:
rbeucher: This is clearly written in the readthedocs documentation. Please copy and paste to the README
setup.pyfile or elsewhere.Readme requirements
The package meets the readme requirements below:
The README should include, from top to bottom:
rbeucher: Again, this can just be copied from the documentation.
rbeucher: The package as a large range of application, I am not sure how this can be done. Maybe a couple of examples.
rbeucher: There are probably many packages available on Github that do similar things. Pyrolite as broader applications.
Functionality
Installation: Installation succeeds as documented.
Functionality: Any functional claims of the software been confirmed.
Performance: Any performance claims of the software been confirmed.
Automated tests: Tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine.
rbeucher: 1 test failed: test/plot/plot_spider.py:32
Continuous Integration: Has continuous integration, such as Travis CI, AppVeyor, CircleCI, and/or others.
Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
For packages co-submitting to JOSS
Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.
The package contains a
paper.mdmatching JOSS's requirements with:Final approval (post-review)
Estimated hours spent reviewing: 4
Review Comments
Pyrolite is without a doubt a very useful package and I will certainly recommend it to my students and colleague.
I have been impressed by the quality of the package. There has been a lot of work in making sure that the functionalities are well documented, both in the docstrings and on readthedocs. The examples provided covers an impressive range of very useful applications. I only had a quick look at the code but it definitely follows some very good practices and I will likely borrow some ideas.
The package is likely to be difficult to use for python beginners but I think that the author has striken the right balance between flexibility and usage. The pandas and matplolib libraries have been leveraged in a way that will provide future-proof development of the code. As a developer myself, I really appreciate the effort and the quality of the work delivered.
There is an extensive range of tests. All of them except 1 have passed on my local machine.
I have spent some time playing with the Jupyter notebook provided on readthedocs.
Some markdown could be added to the notebooks but users can largely figure out what is going on thanks to the docstrings available for each function.
There is a lot of very interesting functionalities (Unit scaling, Convert to oxyde, reference models, composition etc.).
A few Jupyter notebooks break because of a pandas deprecation. This has already been flagged in the issue tracker #31. This must be fixed before accepting the package.
I have also found a few problems due to some data files missing in the data folder. The files were not listed in the MANIFEST.in. I believe this has been fixed in the dev branch and will have to be merged in the version submitted to PyOpenSci.
I would encourage the author to highlight the package as an excellent ressource for teaching in the README.
Having the option to run the examples with Binder is great. However, I found the binders very long to start and I give up at some point. I have not looked at the binder set up but it would be good to improve that if possible.
I hope you will find that review useful.
Romain Beucher
morganjwilliams commentedon Apr 29, 2020
@rbeucher thanks for your effort in this review and highlighting a few issues! I'll put out a new release shortly (it will be 0.2.6, incorporating changes currently listed in the changelog 'Development' section) with the majority of these issues addressed and an updated README, and make a note here when it's available.
I've struggled in getting binder to boot up quickly, which is partly due to the relatively heavy dependencies (numpy, pandas, matplotlib, scipy, sklearn), and partly due to the fact that it's likely updated more often than people access the binder links (hence the docker image is rebuilt on-access). Happy to incorporate suggestions to make this easier to work with if anyone has ideas on this front.
charlesll commentedon Apr 30, 2020
Package Review
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
Documentation
The package includes all the following forms of documentation:
Charles Le Losq: this needs to be added. The website is good but people also stop on the README when browsing Github. I would suggest adding things in the README on Github like a short description of what this software does, its goals, installation, roadmap, etc.
Only for the stable version, not present for the development version.
This is present on the website.
Function Documentation: for all user-facing functions
This is well documented on the website.
Examples for all user-facing functions
Again, very good, well documented on the website.
Community guidelines including contribution guidelines in the README or CONTRIBUTING.
I would suggest duplicating the contributing guidelines from the website in the CONTRIBUTING.md file on Github.
setup.pyfile or elsewhere.Readme requirements
The package meets the readme requirements below:
The README should include, from top to bottom:
Not present. This can be added.
Not applicable.
I think it needs to be added on the Github README. Present on the website.
Functionality
I would suggest integrating the tests through nosetests. See https://python-packaging.readthedocs.io/en/latest/testing.html
For packages co-submitting to JOSS
While the package mostly proposes utility functions, its global use can definitely allow developing geochemical models. Therefore, I think it fits JOSS guidelines.
Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.
The package contains a
paper.mdmatching JOSS's requirements with:Final approval (post-review)
Estimated hours spent reviewing: 3 h
Revier Comments
Pyrolite is a useful package in a community lead by Excel or other commercial software.
It will help the manipulation of geochemical data. It is not limited to this discipline, as actually it
can help the manipulation, visualization and interpretation of data where ternary plots, chemical conversion and
so on are necessary. The plans to link it to python-MELTS, to develop isotopic calculation and so on are also very good news.
I particularly encourage the author to make the effort to link it to python-MELTS, as this can be
an important source of users.
Some areas of improvement include:
As a general advice, I just wanted to say that I encourage the author to continue to provide clear examples of how the plotting API inferface with Matplotlib in the future. Matplotlib is THE standard Python plotting library. You should aim at complementing it, not replacing it.
In general, when one proposes an easier way to make some plots difficult to do with Matplotlib, it is easier at first, but then I want to
do maybe something more complex and at this stage, usually, I have to re-write everything in Matplotlib... This is why I advice you to make sure that your
plotting functions interface seamlessly with Matplotlib. Please keep that in mind upon further developing your package.
I would suggest to add the example notebooks in an example folder in your root directory in Github. Otherwise it is actually difficult to find them. (I like to see the notebooks online on Github, it is very boring to have to download them...) Also, a bit more details and comments in the notebooks will be better. I personally prefer documented Jupyter notebooks compared to websites.
Maybe you would like to add an option in get_ionic_radii() for using the Whittaker and Muntus (1970) ionic radii that were maybe more geared toward geochemical oxides ?
Add an example of how to properly put subscribs for indicating SiO2, or Al2O3 or any other element with subscripts in ternary plots. Without that, the ternary plots are not really "publishable" as is...
20 remaining items
lwasser commentedon Jun 8, 2020
ok perfect. thank you @arfon i'll add this to our documentation for editors that we can give instructions for folks o submit directly to JOSS and mention that the review happened here already and the package was accepted. Many thanks. So @morganjwilliams please go ahead and submit to JOSS. In your submission, please mention that this went through and was approved by the pyopensci review process. you can even link to this issue. If anything comes up along the way please let me know! i'll close this issue for now but can reopen if need be.
we are actively working on improving our documentation so it's helpful to know how this part of the process goes IF there are tips that we can provide to maintainers like yourself to make things easier!!
lwasser commentedon Jun 9, 2020
🎆 this was accepted by JOSS. thank you again @arfon !! i'll go ahead and close this issue.
@rbeucher and @charlesll are you comfortable with my adding you to the pyopensci website as reviewers? it will show your github use profile picture, name the the package you reviewed.
see: https://www.pyopensci.org/contributors/
charlesll commentedon Jun 9, 2020
morganjwilliams commentedon Jun 10, 2020
@lwasser just a quick note that the pyOpenSci --> JOSS process was very straightforward and speedy. The info on the website and in the submission/review templates made sure we had everything ready for JOSS when we initially submitted to pyOpenSci.
If you frequently have submissions which would also like to submit to JOSS, consider templating a short paragraph to add to the 'notes to editor' section on the JOSS submission form [e.g. "This has been reviewed and accepted by pyOpenSci (link to issue), and is currently archived on Zenodo/Figshare/other (link to archive or DOI)"]. This won't save much time, but will just make sure info that needs to be communicated is automatically included (you might even be able to prefill some of this data with a query attached to the JOSS submission URL, although my quick test of this didn't quite get there..).
lwasser commentedon Sep 15, 2022
hey 👋 @morganjwilliams @charlesll @rbeucher ! I hope that you are all well. I am reaching out here to all reviewers and maintainers about pyOpenSci now that i am working full time on the project (read more here). We have a survey that we'd like for you to fill out so we can:
🔗 HERE IS THE SURVEY LINK 🔗
The survey should take about 10 minutes to complete depending upon how much you decide to write. This information will help us greatly as we make decisions about how pyOpenSci grows and serves the community. Thank you so much in advance for filling it out.
NOTE: this is different from the form designed for reviewers to sign up to review.
If there are other maintainers for this project, please ping them here and ask them to fill out the survey as well. It is important that we ensure packages are supported long term or sunsetted with sufficient communication to users. Thus we will check in with maintainers annually about maintenance.
Thank you in advance for doing this and supporting pyOpenSci.
lwasser commentedon Sep 28, 2022
hey there @charlesll @rbeucher 👋 Just a friendly reminder to take 5-10 minutes to fill out our survey . We really appreciate it. Thank you in advance for helping us by filling out the survey!! 🙌
✨ Morgan thank you so much for taking the time to fill it out 🙌 I will shoot you an email later this week!
🔗 HERE IS THE SURVEY LINK 🔗