pyinterpolate
Submitting Author: (@SimonMolinsky )
All current maintainers: (@SimonMolinsky )
Package Name: Pyinterpolate
One-Line Description of Package: Spatial interpolation: Kriging and Variogram Analysis toolset
Repository Link: https://github.com/DataverseLabs/pyinterpolate
Version submitted: 1.0.1
EiC: @eliotwrobson
Editor: @banesullivan
Reviewer 1: @crhea93
Reviewer 2: @martinfleis
Archive: TBD
JOSS DOI: https://doi.org/10.21105/joss.02869
Version accepted: TBD
Date accepted (month/day/year): TBD
Code of Conduct & Commitment to Maintain Package
- [x] I agree to abide by pyOpenSci's Code of Conduct during the review process and in maintaining my package after should it be accepted.
- [x] I have read and will commit to package maintenance after the review as per the pyOpenSci Policies Guidelines.
Description
- Include a brief paragraph describing what your package does:
Pyinterpolate is the Python library for spatial statistics. The package provides access to spatial statistics tools (variogram analysis, Kriging, Poisson Kriging, Indicator Kriging, Universal Kriging, Inverse Distance Weighting).
Package is designed for: GIS experts, Geologists, Social scientists
The core functionalities of Pyinterpolate are spatial interpolation and spatial prediction for point and block datasets, and areal data disaggregation.
Pyinterpolate performs:
- Ordinary Kriging and Simple Kriging - spatial interpolation from points
- Centroid-based Poisson Kriging of polygons - spatial interpolation from blocks and regions
- Area-to-area and Area-to-point Poisson Kriging of Polygons - spatial interpolation and data deconvolution from areas to points
- Indicator Kriging - kriging based on probabilities
- Universal Kriging - kriging with trend
- Inverse Distance Weighting - benchmarking spatial interpolation technique
- Semivariogram regularization and deconvolution - transforming variogram of areal data in regards to point support data
- Semivariogram modeling and analysis - is your data spatially correlated? How do neighbors influence each other?
Scope
-
Please indicate which category or categories. Check out our package scope page to learn more about our scope. (If you are unsure of which category you fit, we suggest you make a pre-submission inquiry):
- [ ] Data retrieval
- [ ] Data extraction
- [x] Data processing/munging
- [ ] Data deposition
- [ ] Data validation and testing
- [ ] Data visualization[^1]
- [ ] Workflow automation
- [ ] Citation management and bibliometrics
- [ ] Scientific software wrappers
- [ ] Database interoperability
Domain Specific
- [x] Geospatial
- [ ] Education
Community Partnerships
If your package is associated with an existing community please check below:
- [ ] Astropy:My package adheres to Astropy community standards
- [ ] Pangeo: My package adheres to the Pangeo standards listed in the pyOpenSci peer review guidebook
[^1]: Please fill out a pre-submission inquiry before submitting a data visualization package.
-
For all submissions, explain how and why the package falls under the categories you indicated above. In your explanation, please address the following points (briefly, 1-2 sentences for each):
- Who is the target audience and what are scientific applications of this package?
The target audience of pyinterpolate are researchers using spatial interpolation techniques in their studies (in mining, geology, social sciences, ecology, public health). Emphasis on Area-to-Point Poisson Kriging makes pyinterpolate valuable especially for people working with population-based spatial data that need to transform areal aggregates into point-support models.
- Are there other Python packages that accomplish the same thing? If so, how does yours differ?
PyKrige - point kriging, supports 2D and 3D ordinary and universal kriging and variogram analysis. Users cannot perform areal-based kriging. Package seems to be not maitained in the last year.
Tobler (PySAL) - areal interpolation, uses different modeling techniques than pyinterpolate. Package is under active development.
- 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:
n/a
Technical checks
For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:
- [x] does not violate the Terms of Service of any service it interacts with.
- [x] uses an OSI approved license.
- [x] contains a README with instructions for installing the development version.
- [x] includes documentation with examples for all functions.
- [x] contains a tutorial with examples of its essential functions and uses.
- [x] has a test suite.
- [x] has continuous integration setup, such as GitHub Actions 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:
Note: JOSS accepts our review as theirs. You will NOT need to go through another full review. JOSS will only review your paper.md file. Be sure to link to this pyOpenSci issue when a JOSS issue is opened for your package. Also be sure to tell the JOSS editor that this is a pyOpenSci reviewed package once you reach this step.
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.
- [x] 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.
Confirm each of the following by checking the box.
- [x] I have read the author guide.
- [x] I expect to maintain this package for at least 2 years and can help find a replacement for the maintainer (team) if needed.
Please fill out our survey
- [x] Last but not least please fill out our pre-review survey. This helps us track submission and improve our peer review process. We will also ask our reviewers and editors to fill this out.
P.S. Have feedback/comments about our review process? Leave a comment here
Editor and Review Templates
Thanks for your submission @\SimonMolinsky! Sorry for the delays, I'll do the initial EiC checks in the next day or so👍🏽
Ok @eliotwrobson , take your time! :)
Editor in Chief checks
Hi there! Thank 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.
- [x] Installation The package can be installed from a community repository such as PyPI (preferred), and/or a community channel on conda (e.g. conda-forge, bioconda).
- [x] The package imports properly into a standard Python environment
import package.
- [x] The package imports properly into a standard Python environment
- [x] Fit The package meets criteria for fit and overlap.
- [x] Documentation The package has sufficient online documentation to allow us to evaluate package function and scope without installing the package. This includes:
- [x] User-facing documentation that overviews how to install and start using the package.
- [x] Short tutorials that help a user understand how to use the package and what it can do for them.
- [x] API documentation (documentation for your code's functions, classes, methods and attributes): this includes clearly written docstrings with variables defined using a standard docstring format.
- [x] Core GitHub repository Files
- [x] README The package has a
README.mdfile with clear explanation of what the package does, instructions on how to install it, and a link to development instructions. - [x] Contributing File The package has a
CONTRIBUTING.mdfile that details how to install and contribute to the package. - [x] Code of Conduct The package has a
CODE_OF_CONDUCT.mdfile. - [x] License The package has an OSI approved license. NOTE: We prefer that you have development instructions in your documentation too.
- [x] README The package has a
- [x] Issue Submission Documentation All of the information is filled out in the
YAMLheader of the issue (located at the top of the issue template). - [x] Automated tests Package has a testing suite and is tested via a Continuous Integration service.
- [x] Repository The repository link resolves correctly.
- [x] Package overlap The package doesn't entirely overlap with the functionality of other packages that have already been submitted to pyOpenSci.
- [ ] Archive (JOSS only, may be post-review): The repository DOI resolves correctly.
- [ ] Version (JOSS only, may be post-review): Does the release version given match the GitHub release (v1.0.0)?
- [x] Initial onboarding survey was filled out We appreciate each maintainer of the package filling out this survey individually. :raised_hands: Thank you authors in advance for setting aside five to ten minutes to do this. It truly helps our organization. :raised_hands:
Editor comments
Overall, the package looks really good! I think the documentation is very clear and easy to navigate. Since all of the pre-review checks look good, I'll work on finding an editor. In the meantime, please take a look at the readme guidelines. I don't think it's strictly necessary to address all of these before starting a review, but getting through as many items as you can while we're getting the ball rolling will help speed up the review process. Thanks again @SimonMolinsky !
Thanks @eliotwrobson !
Maybe I can help with the editor and reviewers, I will try to find someone in my community.
@SimonMolinsky that would be awesome! I'm a bit busy this week but I'll start poking around on my end this weekend.
@SimonMolinsky good news, @crhea93 has agreed to be a reviewer for this package! Still looking for an editor and second reviewer though, will keep you posted.
Thank you!
I've found another reviewer - @martinfleis could take a look into the package. @martinfleis could you confirm? We still need an editor in this case :)
Happy to review!
Good news, @banesullivan has agreed to be editor for this review! He's a bit busy in the next week or so, but once he's available we can get the ball rolling.
:wave: Hi @crhea93 and @martinfleis! Thank you for volunteering to review pyinterpolate for pyOpenSci! I'm excited to kick off this review as editor and I'll try to chime in with a few comments of my own once I have a moment to experiment with pyinterpolate myself.
Please fill out our pre-review survey
Before beginning your review, please fill out our pre-review survey. This helps us improve all aspects of our review and better understand our community. No personal data will be shared from this survey - it will only be used in an aggregated format by our Executive Director to improve our processes and programs.
- [x] @crhea93 survey completed.
- [ ] @martinfleis survey completed.
The following resources will help you complete your review:
- Here is the reviewers guide. This guide contains all of the steps and information needed to complete your review.
- Here is the review template that you will need to fill out and submit here as a comment, once your review is complete.
Please get in touch with any questions or concerns!
Your review is due: October ~3rd, 2025
I've set the due date ~3 weeks out from now, but we're flexible here so please don't rush yourself if life or other things pop up and require you to delay a bit.
Reviewers: @crhea93 @martinfleis Due date: 2025-10-03
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
- [x] As the reviewer, I confirm that there are no conflicts of interest for me to review this work (If you are unsure whether you are in conflict, please speak to your editor before starting your review).
Documentation
The package includes all the following forms of documentation:
- [x] A statement of need clearly stating problems the software is designed to solve and its target audience in the README file.
- [x] Installation instructions: for the development version of the package and any non-standard dependencies in README.
- [x] Short quickstart tutorials demonstrating significant functionality that successfully runs locally.
- [x] Function Documentation: for all user-facing functions.
- [x] Examples for all user-facing functions.
- [x] Community guidelines including contribution guidelines in the README or CONTRIBUTING.
- [x] Metadata including author(s), author e-mail(s), a URL, and any other relevant metadata, for example, in a
pyproject.tomlfile or elsewhere.
Readme file requirements The package meets the readme requirements below:
- [x] Package has a README.md file in the root directory.
The README should include, from top to bottom:
- [x] The package name
- [x] Badges for:
- [x] Continuous integration and test coverage,
- [x] Docs building (if you have a documentation website),
- [ ] Python versions supported,
- [ ] Current package version (on PyPI / Conda).
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 wider than high. A badge for pyOpenSci peer review will be provided when the package is accepted.
- [x] Short description of package goals.
- [x] Package installation instructions
- [x] Any additional setup required to use the package (authentication tokens, etc.)
- [x] Descriptive links to all vignettes. If the package is small, there may only be a need for one vignette which could be placed in the README.md file.
- [x] Brief demonstration of package usage (as it makes sense - links to vignettes could also suffice here if package description is clear)
- [x] Link to your documentation website.
- [x] If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.
- [x] Citation information
Usability
Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. The package structure should follow the general community best practices. In general, please consider whether:
- [x] Package documentation is clear and easy to find and use.
- [x] The need for the package is clear
- [x] All functions have documentation and associated examples for use
- [x] The package is easy to install
Functionality
- [x] Installation: Installation succeeds as documented.
- [x] Functionality: Any functional claims of the software been confirmed.
- [x] Performance: Any performance claims of the software been confirmed.
- [x] Automated tests:
- [x] All tests pass on the reviewer's local machine for the package version submitted by the author. Ideally this should be a tagged version making it easy for reviewers to install.
- [x] Tests cover essential functions of the package and a reasonable range of inputs and conditions.
- [x] Continuous Integration: Has continuous integration setup (We suggest using Github actions but any CI platform is acceptable for review)
- [x] Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
A few notable highlights to look at:
- [x] Package supports modern versions of Python and not End of life versions.
- [x] Code format is standard throughout package and follows PEP 8 guidelines (CI tests for linting pass)
For packages also submitting to JOSS
- [x] The package has an obvious research application according to JOSS's definition in their submission requirements.
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.md matching JOSS's requirements with:
- [x] A short summary describing the high-level functionality of the software
- [x] Authors: A list of authors with their affiliations
- [x] A statement of need clearly stating problems the software is designed to solve and its target audience.
- [x] References: With DOIs for all those that have one (e.g. papers, datasets, software).
Final approval (post-review)
- [x] The author has responded to my review and made changes to my satisfaction. I recommend approving this package.
Estimated hours spent reviewing: 3
Review Comments
I've put my comments (minor as they are) as individual GitHub issues.
Overall, this is an extremely well documented package. I congratulate the authors on their work!
@banesullivan I've updated my review to complete :)
Thank you for completing this @crhea93!!
I've spoken to @martinfleis who's a little bit behind on this, I'll see what I can do to help push this along
Thank you @crhea93 , and thank you for all your suggestions regarding package and new functionalities that might be introduced :)
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
- [x] As the reviewer, I confirm that there are no conflicts of interest for me to review this work (If you are unsure whether you are in conflict, please speak to your editor before starting your review).
Documentation
The package includes all the following forms of documentation:
- [x] A statement of need clearly stating problems the software is designed to solve and its target audience in the README file.
- [x] Installation instructions: for the development version of the package and any non-standard dependencies in README.
- [x] Short quickstart tutorials demonstrating significant functionality that successfully runs locally.
- [x] Function Documentation: for all user-facing functions.
- [x] Examples for all user-facing functions.
- [x] Community guidelines including contribution guidelines in the README or CONTRIBUTING.
- [x] Metadata including author(s), author e-mail(s), a URL, and any other relevant metadata, for example, in a
pyproject.tomlfile or elsewhere.
Readme file requirements The package meets the readme requirements below:
- [x] Package has a README.md file in the root directory.
The README should include, from top to bottom:
- [x] The package name
- [x] Badges for:
- [x] Continuous integration and test coverage,
- [x] Docs building (if you have a documentation website),
- [x] Python versions supported,
- [x] Current package version (on PyPI / Conda).
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 wider than high. A badge for pyOpenSci peer review will be provided when the package is accepted.
- [x] Short description of package goals.
- [x] Package installation instructions
- [x] Any additional setup required to use the package (authentication tokens, etc.)
- [x] Descriptive links to all vignettes. If the package is small, there may only be a need for one vignette which could be placed in the README.md file.
- [x] Brief demonstration of package usage (as it makes sense - links to vignettes could also suffice here if package description is clear)
- [x] Link to your documentation website.
- [x] If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.
- [x] Citation information
Usability
Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. The package structure should follow the general community best practices. In general, please consider whether:
- [x] Package documentation is clear and easy to find and use.
- [x] The need for the package is clear
- [x] All functions have documentation and associated examples for use
- [x] The package is easy to install
Functionality
- [x] Installation: Installation succeeds as documented.
- [x] Functionality: Any functional claims of the software been confirmed.
- [x] Performance: Any performance claims of the software been confirmed.
- [x] Automated tests:
- [x] All tests pass on the reviewer's local machine for the package version submitted by the author. Ideally this should be a tagged version making it easy for reviewers to install.
- [x] Tests cover essential functions of the package and a reasonable range of inputs and conditions.
- [x] Continuous Integration: Has continuous integration setup (We suggest using Github actions but any CI platform is acceptable for review)
- [x] Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
A few notable highlights to look at:
- [x] Package supports modern versions of Python and not End of life versions.
- [x] Code format is standard throughout package and follows PEP 8 guidelines (CI tests for linting pass)
For packages also submitting to JOSS
- [x] The package has an obvious research application according to JOSS's definition in their submission requirements.
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.md matching JOSS's requirements with:
- [ ] A short summary describing the high-level functionality of the software
- [ ] Authors: A list of authors with their affiliations
- [ ] A statement of need clearly stating problems the software is designed to solve and its target audience.
- [ ] References: With DOIs for all those that have one (e.g. papers, datasets, software).
Final approval (post-review)
- [x] The author has responded to my review and made changes to my satisfaction. I recommend approving this package.
Estimated hours spent reviewing: 3
Review Comments
pyInterpolate is a great package! It is even part of my teaching curriculum so I was happy to review it properly and provide additional feedback, partially based on that I got in class. @SimonMolinsky included all my suggestions in the current dev version, so I am very happy to suggest acceptance. Good job!
@banesullivan I just updated my review comment above. I think I am done.
@martinfleis thank you for your time, review and valuable comments! :)
Thank you for the thorough reviews @martinfleis and @crhea93 and for opening and linking several issues to this review!! @SimonMolinsky, excellent work on pyinterpolate, this has come together fantastically!!
Aside: apologies for my delay!! Life happened and before I knew it a few weeks went by. So sorry about that!
A few quick questions before I post the review acceptance and update the metadata in the original post at the top of this thread:
- Is the submitted Version 1.0.1 the latest incorporating any/all changes requested from this review? If not, @SimonMolinsky, would you be able to post a release and update me with the version to tag with this review/acceptance?
- Do you have a Zendo version and DOI for this? I see this has already been reviewed/accepted to JOSS and the JOSS DOI which is sufficient.
Otherwise, I'm excited accept pyinterpolate and I'll start double checking to finalize the review.
@banesullivan
No apologies required, but thank you for that!
Going back to the package and review:
- I've published version 1.2.0 here: https://github.com/DataverseLabs/pyinterpolate/releases/tag/v1.2.0
- DOI for JOSS paper is: https://doi.org/10.21105/joss.02869
- DOI for this version on Zenodo (1.2.0) is: https://doi.org/10.5281/zenodo.17691515
Fantastic! I've updated the metadata in the top level post here to reflect those details.
🎉 With that, pyinterpolate has been approved by pyOpenSci!
Author Wrap Up Tasks
There are a few things left to do to wrap up this submission:
- [x] Activate Zenodo watching the repo if you haven't already done so.
- [x] Tag and create a release to create a Zenodo version and DOI.
- [ ] Add the badge for pyOpenSci peer-review to the README.md of pyinterpolate. The badge should be
[](https://github.com/pyOpenSci/software-review/issues/250). - [ ] Please fill out the post-review survey. All maintainers and reviewers should fill this out.
🎉 Congratulations! You are now published with pyOpenSci in addition to JOSS! 🎉
Editor Final Checks
Please complete the final steps to wrap up this review. Editor, please do the following:
- [x] Make sure that the maintainers filled out the post-review survey
- [x] Invite the maintainers to submit a blog post highlighting their package. Feel free to use / adapt language found in this comment to help guide the author.
- [x] Change the status tag of the issue to
6/pyOS-approved 🚀🚀🚀. (You can remove all other labels; If the the package is moving on to JOSS then add a JOSS label) - [x] Update the header of this issue with the date accepted, the version accepted, and the accepted version DOI (from Zenodo) to the header of this issue.
- [x] Invite the package maintainer(s) and both reviewers to the pyOpenSci Slack.
- [x] If the package is JOSS-accepted please add the JOSS DOI to the YAML at the top of the issue.
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.
@SimonMolinsky, @martinfleis, and @crhea93, would you all please take a moment to fill out our post-review survey? Thank you!
@SimonMolinsky, I like to invite you to write a blog post (totally optional) on pyinterpolate for us to promote your work! if you are interested - here are a few examples of other blog posts:
and here is a markdown example that you could use as a guide when creating your post.
it can even be a tutorial like post that highlights what your package does. Then we can share it with people to get the word out about pyinterpolate.
If you are too busy for this no worries. But if you have time - we'd love to spread the word about your package!