-
Notifications
You must be signed in to change notification settings - Fork 36
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
PyPartMC #179
Comments
Hey @slayoo, I'm Alex, currently serving as the Editor-in-Chief. I'm sorry it took me so long to get back to you.
Please find below the preliminary checks. Editor-in-Chief checksThank you for submitting your package for pyOpenSci review. Below are the basic checks that your package needs to pass to begin our review. If some of these are missing, we will ask you to work on them before the review process begins. Please check our Python packaging guide for more information on the elements below.
Editor commentsI have a few suggestions regarding the documentation:
|
@Batalex, thanks for the feedback! |
@Batalex, with the following PRs just merged:
the repo and docs are improved following your suggestions: |
Thank you, @slayoo, the docs look great! |
thank you! |
Sorry, I forgot to add something important to my previous message. Since our field of expertise is Python, the significant portion of C++ code in |
Hello @slayoo, thank you for patience! I'm Chiara, I am following up as Editor in chief. |
Thank you, @russbiggs and @cmarmo! |
@slayoo Sorry for the slow start on my part as editor, I am currently seeking reviewers and will update as that progresses. |
@simonom I took the liberty to highlight the traceback in your previous comment. I see you are using a miniconda installation, in order to move forward with the review, may I suggest to create a conda/mamba environment with a 3.12 python version? Also @dbaston, @simonom , please let me know if the review deadline is realistic. Thank you! 🙏 |
@cmarmo, yes, I will continue with a compatible python version, and yes, deadline can be met! |
As of PyPartMC v1.3.10 (released earlier today), there are binary wheels on PyPI for Python 3.13 on macOS. Supported OS versions are: macosx-13 (universal binary) and macosx-14 (ARM binary). Hope it helps! Feedback welcome. Note that Python 3.13 is not fully supported in auxiliary packages used in PyPartMC example notebooks, notably:
|
Package ReviewPlease check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
DocumentationThe package includes all the following forms of documentation:
I did not find instructions for installing the development version. After pulling the submodules, running
I ran the notebooks on Google Colab without issue. It would be helpful to have instructions for running the notebooks locally, as additional dependencies such as
While the documentation contains an entry for user-facing functions, it isn't always clear what the expected arguments or return values are. Some argument names are not rendered in the documentation. For example,
I did not find examples in the Python API documentation.
It would be helpful to describe how someone can contribute to the documentation. This may be as simple as describing where the docstring text can be found.
Included in Readme file requirements
The README should include, from top to bottom:
NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)
None required.
Described in the linked paper.
UsabilityReviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole.
Functionality
Did not evaluate.
Did not evaluate.
Did not see instructions for running tests. Tests run successfully using
Did not evaluate. A code coverage report of the C++ binding code would be useful.
PyPartMC uses a custom It wasn't clear to me why C++ class methods were implemted as static methods manually taking a reference to
For packages also 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
Final approval (post-review)
Estimated hours spent reviewing: 6 Review CommentsThis package cleanly exposes Fortan code to Python using pybind11. I did not see any serious code quality issues. Tests run smoothly but I was not able to easily determine which code is covered by the tests. HDF and netCDF being fairly common libraries, I wonder about the potential for runtime issues if the version vendored by PyPartMC differs from a version loaded by another package such as |
Thank you @dbaston! Your work is much appreciated and helpful. |
Package ReviewPlease check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
DocumentationThe package includes all the following forms of documentation:
The authors could be more explicit in the README introduction, such as providing an example of the user you are serving. Actually, the goals stated in the ‘Target audience and scientific applications’ sections of the review page (PyPartMC · Issue #179 · pyOpenSci/software-submission) seem very suitable for this section.
The user could benefit from some description around the pip install PyPartMC command to explain that CMake and a fortran compiler are required. This is well detailed in the FAQs, but it makes sense for these dependencies to be stated before the pip install instruction for PyPartMC, including the necessary versions (e.g. python).
The API documentation is very valuable for explaining how a user can set inputs for functions, but the link is somewhat hidden in the Features section of README. I suggest a more obvious presence in README.
In CITATION.cff is author information in addition to a doi to an associated published paper. In Credits of README is funding information. Readme file requirements
The README should include, from top to bottom:
Would be useful to have a repostatus badge. NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)
The authors could be more explicit in the README introduction, such as providing an example of the user you are serving. Actually, the goals stated in the ‘Target audience and scientific applications’ sections of the review page (PyPartMC · Issue #179 · pyOpenSci/software-submission) seem very suitable for this section.
Because the README does not contain a section titled ‘Installation’ it is really easy to miss the ‘pip install PyPartMC’ command, so recommend making this clearer. Preferably this installations section would also describe the dependencies on Fortran and CMake.
Not applicable for local install, and additional setup for vignettes is well described
I think the vignettes are a real strong point of the repository.
The python and Julia example are provided. Like with the Short description of package goals (for which I recommend an example of a target user), it would help to have more detail in the ‘Usage examples’ introduction about why a user would be interested in randomly sampling particles from an aerosol size distribution. I think this is particularly important because PyPartMC is aiming to draw in more novice users of PartMC, so these people will potentially be new to PartMC.
As stated by me in the Function Documentation: section above, it would be useful to have the link to the API docs more visible than the brief mention in the Features section.
I think this section needs including in the README, particularly as the package is an interface to another package (PartMC). This section would be an opportunity to really clearly explain what the implications of using this package are over using the PartMC package directly. It would also be good to include in this section the references included in ‘Other Python packages with relevant feature scope’ in the review page (PyPartMC · Issue #179 · pyOpenSci/software-submission)
I think this section needs including in the README, particularly as the package is an interface to another package (PartMC). This section would be an opportunity to really clearly explain what the implications of using this package are over using the PartMC package directly. It would also be good to include in this section the references included in ‘Other Python packages with relevant feature scope’ in the review page (PyPartMC · Issue #179 · pyOpenSci/software-submission) UsabilityReviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole.
See notes above on clearer linking to the API Docs in README
See notes above on clearer linking to the API Docs in README
The API Docs are impressive, and some examples are also provided
Functionality
Some tests need pytest installed, so this should be stated along with other install depenencies
I can see that CI is setup in the .github/workflows folder, but note that the link in the ‘CI builds’ text in ‘Features’ of README is broken
For packages also 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
Final approval (post-review)
Estimated hours spent reviewing: 7 Review CommentsI've enjoyed reviewing this package, which has been very well put together overall. The comments I have provided I believe cover just minor changes. |
Hello everybody and happy new year to all of you! @slayoo, do you think it will be possible for you to answer the comments and fix the fixable issues by the end of January? |
Just confirming we're working towards addressing the feedback from both reviews. A couple of PRs already merged over the last days, including codecov integration (open-atmos/PyPartMC#397), README updates (open-atmos/PyPartMC#396), more narrative in the example notebooks (open-atmos/PyPartMC#398, open-atmos/PyPartMC#383); let me report a point-by-point summary by the end of the weekend, thank you for your patience. |
Here's a point-by-point reply to the comments by @dbaston. Thank you for very helpful feedback!
The CONTRIBUTING.md file features a section with a brief info on how to set up a development (debugging) setup: https://github.com/open-atmos/PyPartMC/blob/main/CONTRIBUTING.md#how-to-debug
This information was previously hidden in the
PR's open-atmos/PyPartMC#398, open-atmos/PyPartMC#383 and open-atmos/PyPartMC#376 introduced narrative text to three of the examples. There is, clearly, still room for improvement, but we expect that these three examples will also serve as templates for further developments of the descriptive part of PyPartMC example notebooks.
In short, this is not addressed yet. We have, though, linked the above comments from two outstanding issues relevant to the docs:
note taken in the CONTRIBUTING.md-enhancements issue: open-atmos/PyPartMC#406
For now, a new issue (with a "help wanted" label) was created: open-atmos/PyPartMC#403
Added in open-atmos/PyPartMC#396
To this end, one idea is to introduce a mechanism that will automatically verify if all docstrings in PyPartMC match the Doxygen comments from PartMC Fortran code. It is not entirely doable (perhaps this could be limitted to a subset of the docstring), but a starting point for brainstorming: open-atmos/PyPartMC#31
The CONTRIBUTING.md file has a section hinting how to run the tests: https://github.com/open-atmos/PyPartMC/blob/main/CONTRIBUTING.md#how-to-debug
Added in open-atmos/PyPartMC#397
Not completed yet, but an issue was created to track progress on it: open-atmos/PyPartMC#403
Noted in the CONTRIBUTING.md0enhancements issue to clarify the above pattern: open-atmos/PyPartMC#406
Earlier in the development, we have noted that SciPy includes parts of SUNDIALS which are also statically linked within PyPartMC. SciPy is used in the examples, so the CI runs include cases where both are loaded (relevant notes: open-atmos/PyPartMC#16). It seems that it is not an issue, but indeed a clarification why would best be added, e.g., to the CONTRIBUTING.md file: note taken in open-atmos/PyPartMC#406 |
Here's a point-by-point reply to the comments by @simonom. Thank you for very helpful feedback!
Added in open-atmos/PyPartMC#396
The following passage was added early in the README as a part of open-atmos/PyPartMC#396:
A sentence with a link to the docs was added to the second paragraph of the README in open-atmos/PyPartMC#407
Added in open-atmos/PyPartMC#396
ditto - added in open-atmos/PyPartMC#396
"Installation" section added in open-atmos/PyPartMC#408
With the README growing in size, we opt for focusing on explanations of the concepts such as sampling in the examples. To this end, the "urban plume" example was extended with broader narrative commenting on each step of a simulation: open-atmos/PyPartMC#398
Addressed in open-atmos/PyPartMC#407
List of other packages with relevant features added in open-atmos/PyPartMC#404
Added in open-atmos/PyPartMC#405
The CONTRIBUTING.md file is undergoing enhancements (open-atmos/PyPartMC#409) addressing several issues note in the reviews (open-atmos/PyPartMC#406).
Fixed in open-atmos/PyPartMC#410 |
@cmarmo, @dbaston, @simonom |
And thanks to all PyPartMC developers who contributed to the recent sprint: @nriemer, @mwest1066, @jcurtis2, @emmacware, @zdaq12, @klee-48 & @Griger5 |
Thank you @slayoo and all the contributors for your work. @dbaston , @simonom are the maintainer answer acceptable? Please let us know. As the authors do not plan to submit to JOSS, this is the last step before acceptance. |
Thanks, I will review tomorrow morning |
@cmarmo, I have looked through the detailed response to referee comments, and conclude the associated updates satisfy the comments. I therefore recommend acceptance as is. |
Yes, I recommend the package be accepted. I especially appreciate the additions to the first notebook and the creation of a code coverage report. |
🎉 I am very happy to announce then, that PyPartMC has been approved by pyOpenSci! Please let me know by commenting in the issue or by e-mail if you are interested in an invite to the pyOpenSci Slack. Also @slayoo, I am going to announce the approval on our discourse, if you are planning to share your experience with pyOpenSci in a blog post or social posts, please let me know so I can link them to the announcement. Author Wrap Up TasksThere are a few things left to do to wrap up this submission:
Editor Final ChecksPlease complete the final steps to wrap up this review. Editor, please do the following:
If you have any feedback for us about the review process please feel free to share it here. We are always looking to improve our process and documentation in the peer-review-guide. |
thank you, @dbaston, @simonom and @cmarmo ✓pyOpenSci badge just added: open-atmos/PyPartMC#415 |
Submitting Author: Sylwester Arabas (@slayoo)![DOI](https://camo.githubusercontent.com/026d9b96dca68bfe8cbbf0ef17e7543290dea6c68078cc74a4e23222ac3b0a14/68747470733a2f2f7a656e6f646f2e6f72672f62616467652f444f492f31302e353238312f7a656e6f646f2e31343830313133382e737667)
All current maintainers: (@zdaq12, @jcurtis2, @nriemer, @mwest1066)
Package Name: PyPartMC
One-Line Description of Package: Python interface to PartMC aerosol-dynamics Monte-Carlo simulation package
Repository Link: https://github.com/open-atmos/PyPartMC/
Version submitted: v1.2.0
EIC: @Batalex
Editor: @cmarmo
Reviewer 1: @simonom
Reviewer 2: @dbaston
Archive:
Version accepted: 1.4.2
Date accepted (month/day/year): 02/12/2025
Code of Conduct & Commitment to Maintain Package
Description
PyPartMC is a Python interface to PartMC, a particle-resolved Monte-Carlo code for atmospheric aerosol simulation. PyPartMC is implemented mostly in C++ (based on the pybind11 framework) with some C and Fortran boilerplate layers. PyPartMC constitutes an API to the PartMC Fortran internals. Besides empowering Python/Jupyter users, PyPartMC can facilitate using PartMC from other environments - see, e.g., Julia and Matlab examples in the project README.
Scope
Domain Specific
n/a
(atmospheric science)
Community Partnerships
n/a
(we host development as a part of the OpenAtmos initiative: https://github.com/open-atmos)
Target audience and scientific applications
Development of PyPartMC has been intended to remove limitations to the use of Fortran-implemented PartMC software. PyPartMC facilitates the dissemination of computational research results by streamlining independent execution of PartMC simulations, which could prove advantageous during peer review process. Additionally, the ability to easily package examples, simple simulations, and results in a web-based notebook allows PyPartMC to support the efforts of many members of the scientific community, including researchers, instructors, and students, with nominal software and hardware requirements.
Other Python packages with relevant feature scope
Technical checks
For details about the pyOpenSci packaging requirements, see our [packaging guide][PackagingGuide]. Confirm each of the following by checking the box. This package:
Publication Options
(we have recently published a SoftwareX paper on PyPartMC: https://doi.org/10.1016/j.softx.2023.101613)
Are you OK with Reviewers Submitting Issues and/or pull requests to your Repo Directly?
Confirm each of the following by checking the box.
Please fill out our survey
The text was updated successfully, but these errors were encountered: