Skip to content
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

BlackMarblePy Submission #207

Open
16 of 30 tasks
g4brielvs opened this issue Jul 18, 2024 · 17 comments
Open
16 of 30 tasks

BlackMarblePy Submission #207

g4brielvs opened this issue Jul 18, 2024 · 17 comments
Assignees

Comments

@g4brielvs
Copy link

g4brielvs commented Jul 18, 2024

Submitting Author: Gabriel Stefanini Vicente (@g4brielvs)
All current maintainers: @g4brielvs, @ramarty
Package Name: BlackMarblePy
One-Line Description of Package: Georeferenced Rasters and Statistics of Nightlights from NASA Black Marble
Repository Link: https://github.com/worldbank/blackmarblepy
Version submitted: v2024.8.1
EiC: @cmarmo
Editor: @yeelauren
Reviewer 1: @gadomski
Reviewer 2: @ehinman!
Archive: TBD
JOSS DOI: TBD
Version accepted: TBD
Date accepted (month/day/year): TBD


Code of Conduct & Commitment to Maintain Package

Description

BlackMarblePy is a Python package that provides a simple way to use nighttime lights data from NASA’s Black Marble project. Black Marble is a NASA Earth Science Data Systems (ESDS) project that provides a product suite of daily, monthly and yearly global nighttime lights. This package automates the process of downloading all relevant tiles from the NASA LAADS DAAC to cover a region of interest, converting the raw files (in HDF5 format), to georeferenced rasters, and mosaicking rasters together when needed.

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
    • 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

  • Geospatial
  • Education

Community Partnerships

  • 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 for BlackMarblePy includes researchers, scientists, and analysts working in the fields of urban studies, environmental science, and socio-economic research. The package facilitates access to NASA's Black Marble nighttime lights data, enabling applications such as monitoring urban growth, assessing the impact of natural disasters, and studying human activities' influence on the environment.

    • Are there other Python packages that accomplish the same thing? If so, how does yours differ?
      While there are other Python packages that provide access to satellite imagery and remote sensing data, BlackMarblePy is specifically tailored for NASA's Black Marble nighttime lights data. It offers a more streamlined and efficient way to retrieve, process, and analyze this particular dataset, providing functionalities and tools optimized for nighttime lights research.

    • If you made a pre-submission enquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the 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.
  • uses an OSI approved license.
  • contains a README with instructions for installing the development version.
  • includes documentation with examples for all functions.
  • contains a tutorial with examples of its essential functions and uses.
  • has a test suite.
  • has continuous integration setup, such as GitHub Actions CircleCI, and/or others.

Publication Options

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.md matching JOSS's requirements with a high-level description in the package root or in inst/.
  • 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.

  • 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.

  • I have read the author guide.
  • 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

P.S. Have feedback/comments about our review process? Leave a comment here

Editor and Review Templates

The editor template can be found here.

The review template can be found here.

@cmarmo
Copy link
Member

cmarmo commented Jul 22, 2024

Hi @g4brielvs , thank you for submitting BlackMarblePy to pyOpenSci.
I'm Chiara, currently serving as Editor In Chief. I just want to let you know that I'm going to perform the first checks on the package ASAP, hopefully by the end of the month.
Thanks for your patience!

@g4brielvs
Copy link
Author

Hi Chira (@cmarmo)! Thank you for your message and for taking the time to review BlackMarblePy. I appreciate the update and look forward to any feedback you may have.

@cmarmo
Copy link
Member

cmarmo commented Jul 31, 2024

Editor in Chief checks

Hi @g4brielvs ! Thank you for submitting your package for pyOpenSci review.
Sorry for taking so much time to come back to you.

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.

  • 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).
    • The package imports properly into a standard Python environment import package.
  • Fit The package meets criteria for fit and overlap.
  • Documentation The package has sufficient online documentation to allow us to evaluate package function and scope without installing the package. This includes:
    • User-facing documentation that overviews how to install and start using the package.
    • Short tutorials that help a user understand how to use the package and what it can do for them.
    • 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.
  • Core GitHub repository Files
    • README The package has a README.md file with clear explanation of what the package does, instructions on how to install it, and a link to development instructions.
    • Contributing File The package has a CONTRIBUTING.md file that details how to install and contribute to the package.
    • Code of Conduct The package has a CODE_OF_CONDUCT.md file.
    • License The package has an OSI approved license.
      NOTE: We prefer that you have development instructions in your documentation too.
  • Issue Submission Documentation All of the information is filled out in the YAML header of the issue (located at the top of the issue template).
  • Automated tests Package has a testing suite and is tested via a Continuous Integration service.
  • Repository The repository link resolves correctly.
  • 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)?

  • Initial onboarding survey was filled out
    We appreciate each maintainer of the package filling out this survey individually. 🙌
    Thank you authors in advance for setting aside five to ten minutes to do this. It truly helps our organization. 🙌


Editor comments

Below my comments about the unchecked boxes up there, and some others related to more general questions.

  • While the examples in the documentation are valuable answers to some of the questions in the submission form, the audience of the package and the possible scientific applications haven't been detailed. Also a comparison with other similar packages (if any) is missing. Do you mind adding some details about that in the submission form or as a follow-up discussion in the issue?
  • The documentation contains an API section but I couldn't easily find it because its title is "blackmarble package" rather than eg "blackmarble API" or "blackmarble package API", do you mind making the section title more explicit?
  • The Code of conduct has been added via a github template? The file itself is missing, then the link in the CONTRIBUTING.md gives a "404 not found".
  • While looking for the API chapter in the documentation sources, I realized that you are using google analytics to monitor the documentation. Please note that google analytics needs cookie consent for European General Data Protection Regulation and specific configuration for California Consumer Privacy Act. Before starting the review do you mind adding a cookie consent banner or switching to another service GDPR and CCPA compliant (eg plausible https://plausible.io/)?
  • I couldn't find your pre-review survey... perhaps something went wrong during its submission. Do you mind refilling it? This helps us track submission and improve our peer review process.

@g4brielvs
Copy link
Author

@cmarmo Thank you so much for reviewing BlackMarblePy. The issues raised on your comments have been addressed. Please let us know if you have any additional feedback or there is anything I can do to help.

@cmarmo
Copy link
Member

cmarmo commented Aug 1, 2024

Thank you @g4brielvs ! I believe we are ready to seek for an editor.
I wonder if you can tag this last version and update the "submitted version" in the description, so your last modifications are transparent for the reviewers.
Thank you so much!

@g4brielvs
Copy link
Author

g4brielvs commented Aug 1, 2024

Thank you @g4brielvs ! I believe we are ready to seek for an editor. I wonder if you can tag this last version and update the "submitted version" in the description, so your last modifications are transparent for the reviewers. Thank you so much!

@cmarmo Thanks so much! And absolutely. I just created the v2024.08.1 release. Please let us know if there is anything we can do to help.

@cmarmo
Copy link
Member

cmarmo commented Aug 15, 2024

Hello @g4brielvs, I am glad to announce that @yeelauren kindly accepted to serve as editor for the BlackMarblePy submission. Thank you so much Lauren!

I'm letting Lauren introduce herself here and wishing to you all a happy review process! 🎉

@g4brielvs
Copy link
Author

Thank you for the update @cmarmo @lwasser! Welcome, @yeelauren, and thank you for taking on the role of editor for the BlackMarblePy submission. I’m looking forward to working with you throughout the review process. If there’s anything you need from me or any way I can assist, please don’t hesitate to reach out.

@yeelauren
Copy link

Hey @g4brielvs, I've reached out a few potential reviewers and waiting to hear back :)
Excited to dive in myself since I already have some related use-cases 👀

@yeelauren
Copy link

yeelauren commented Oct 16, 2024

Editor response to review:


Editor comments

👋 Hi @gadomski and @ehinman! Thank you for volunteering to review
for pyOpenSci! I'm excited to have you both join us 🥳

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.

  • reviewer 1 survey completed.
  • reviewer 2 survey completed.
  • reviewer 3 (if applicable)

The following resources will help you complete your review:

  1. Here is the reviewers guide. This guide contains all of the steps and information needed to complete your review.
  2. 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:

Reviewers: @gadomski and @ehinman
Due date: Nov 6th, 2024

@yeelauren
Copy link

@gadomski @ehinman this week is coming up fast ! Just checking in on any progress or if the due date still seems reasonable ? Thanks!

@gadomski
Copy link

gadomski commented Nov 4, 2024

Thanks for the poke! I'm planning on tackling this week 🙇🏼 ... I'll update if that slips.

@ehinman
Copy link

ehinman commented Nov 4, 2024

I've started my review! I'm hoping to hit the Wednesday deadline still.

@ehinman
Copy link

ehinman commented Nov 5, 2024

I am having the same issue as mentioned here: worldbank/blackmarblepy#96. I'm not sure how to get around it. I tried using my own gdf shape, as well as the example given in Using BlackMarblepy, and both are returning the same error. Any suggestions? I tried the solutions reported in issue 96, but they don't seem to be working for me.

@gadomski
Copy link

gadomski commented Nov 6, 2024

Package Review

  • 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:

  • A statement of need clearly stating problems the software is designed to solve and its target audience in README.
  • Installation instructions: for the development version of the package and any non-standard dependencies in README.
  • Vignette(s) demonstrating major functionality that runs successfully locally.1
  • Function Documentation: for all user-facing functions.
  • [ ] Examples for all user-facing functions. (see notes for editors)
  • Community guidelines including contribution guidelines in the README or CONTRIBUTING.
  • Metadata including author(s), author e-mail(s), a url, and any other relevant metadata e.g., in a pyproject.toml file or elsewhere.

Readme file requirements
The package meets the readme requirements below:

  • Package has a README.md file in the root directory.

The README should include, from top to bottom:

  • The package name
  • Badges for:
    • Continuous integration and test coverage, (see notes for editors)
    • Docs building (if you have a documentation website),
    • A repostatus.org badge,
    • 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 more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

  • Short description of package goals.
  • Package installation instructions
  • Any additional setup required to use the package (authentication tokens, etc.)2
  • 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.
    • Brief demonstration of package usage (as it makes sense - links to vignettes could also suffice here if package description is clear)1
  • Link to your documentation website.
  • If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.
  • Citation information

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole.
Package structure should follow general community best-practices. In general please consider whether:

  • Package documentation is clear and easy to find and use.
  • The need for the package is clear
  • All functions have documentation and associated examples for use
  • The package is easy to install

Functionality

  • Installation: Installation succeeds as documented.
  • Functionality: Any functional claims of the software been confirmed.3
  • Performance: Any performance claims of the software been confirmed.3
  • Automated tests:45
    • 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.
    • Tests cover essential functions of the package and a reasonable range of inputs and conditions.
  • Continuous Integration: Has continuous integration setup (We suggest using Github actions but any CI platform is acceptable for review)6
  • Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
    A few notable highlights to look at:
    • Package supports modern versions of Python and not End of life versions.
    • Code format is standard throughout package and follows PEP 8 guidelines (CI tests for linting pass)

Final approval (post-review)

  • The author has responded to my review and made changes to my satisfaction. I recommend approving this package.

Estimated hours spent reviewing:

Date Hours
2024-11-05 1

Review notes

I've included my comments to the authors as footnotes. For the editors:

  • 🤔 I'm not sure I agree with the requirement to have examples for all user-facing functions. It seems overly onerous and fragile (unless you're working in an environment that executes all examples in docstrings, which isn't all Python projects).
  • I don't agree w/ the coverage badge requirement, but that's more of a personal thing — I find coverage a bit of a false flag at time that's worth more hassle than you get.

Footnotes

  1. The README vignette is non-trivial to execute as a new user. How do I create the geodata frame? Why I can't I use a shapely shape? What does a bearer token look like? 2

  2. The README should call out what token you're expected to get+use (earthdata)

  3. I also ran into https://github.com/worldbank/blackmarblepy/issues/96 when doing a local version of https://www.pyopensci.org/software-peer-review/how-to/reviewer-guide.html. I can't check off "functionality" if it doesn't work that easily, sorry 😞. I'll also skip performance until functionality is resolved. 2

  4. The README doesn't include instructions on how to run tests. Should I run pytest? Are there other things I need to install to run tests?

  5. The tests don't actually exercise the package.

  6. CI doesn't actually block on ruff failures.

gadomski added a commit to gadomski/blackmarblepy that referenced this issue Nov 6, 2024
These arose while doing my pyOpenSci review:
pyOpenSci/software-submission#207 (comment)
gadomski added a commit to gadomski/blackmarblepy that referenced this issue Nov 6, 2024
These arose while doing my pyOpenSci review:
pyOpenSci/software-submission#207 (comment)
@ehinman
Copy link

ehinman commented Nov 6, 2024

Thank you for the opportunity to review! This was my first time reviewing a package for pyOpenSci, and I am VERY excited about this package's capabilities and use cases. I hope you find my review helpful and would love to learn how to properly run the package so I can successfully download nighttime light data.

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

  • 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:

  • A statement of need clearly stating problems the software is designed to solve and its target audience in README.
  • Installation instructions: for the development version of the package and any non-standard dependencies in README.
  • Vignette(s) demonstrating major functionality that runs successfully locally.
  • Function Documentation: for all user-facing functions.
  • Examples for all user-facing functions.
  • Community guidelines including contribution guidelines in the README or CONTRIBUTING.
  • Metadata including author(s), author e-mail(s), a url, and any other relevant metadata e.g., in a pyproject.toml file or elsewhere.

Readme file requirements
The package meets the readme requirements below:

  • Package has a README.md file in the root directory.

The README should include, from top to bottom:

  • The package name
  • Badges for:
    • Continuous integration and test coverage,
    • Docs building (if you have a documentation website),
    • A repostatus.org badge,
    • 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 more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

  • Short description of package goals.
  • Package installation instructions
  • Any additional setup required to use the package (authentication tokens, etc.)*
  • 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.
  • Brief demonstration of package usage (as it makes sense - links to vignettes could also suffice here if package description is clear)
  • Link to your documentation website.
  • If applicable, how the package compares to other similar packages and/or how it relates to other packages in the scientific ecosystem.
  • Citation information

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole.
Package structure should follow general community best-practices. In general please consider whether:

  • Package documentation is clear and easy to find and use.
  • The need for the package is clear
  • All functions have documentation and associated examples for use
  • The package is easy to install

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:
    • 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.
    • Tests cover essential functions of the package and a reasonable range of inputs and conditions.
    • Continuous Integration: Has continuous integration setup (We suggest using Github actions but any CI platform is acceptable for review)
  • Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
    A few notable highlights to look at:
    • Package supports modern versions of Python and not End of life versions.
    • Code format is standard throughout package and follows PEP 8 guidelines (CI tests for linting pass)

Final approval (post-review)

  • The author has responded to my review and made changes to my satisfaction. I recommend approving this package.

Estimated hours spent reviewing: 5


Review Comments

  • I do not have access to the following link in the README: https://www.earthdata.nasa.gov/topics/human-dimensions/nighttime-lights
  • Might be helpful to link to products (product_id) somewhere, since it wasn't immediately clear to me what the alphanumeric codes meant in the function calls: https://blackmarble.gsfc.nasa.gov/#product
  • *I figured out how to get a NASA API bearer token and apply it as an environment variable using os.environ['BLACKMARBLE_TOKEN'] = ###### from Stack Overflow, but the Debian link was not straightforward. More guidance would be helpful.
  • BIGGEST ISSUE: I was unable to run any of the functions due to an error highlighted in this issue. This greatly impacted my ability to review the package.
  • Can you provide an example for each function in the documentation? Or at least in a vignette? I understand this is hard with the API token requirement, but just seeing how a function is parameterized in an example would be helpful.
  • Is BlackMarbleDownloader intended to be used separate from bm_raster and bm_extract? It might be helpful to provide more details on its intended use in the documentation. For example: "A function utilized by bm_raster and bm_extract."
  • Can you provide documentation for blackmarble.raster.transform?
  • Not sure where to view test coverage %.
  • I don't see which python versions are supported. I tried to run it with python 3.12.0
  • Might be nice to link to the R version of this package as well.
  • The test coverage looks extremely limited. I ran pytest in the tests folder on the 3 existing tests...are there more that I'm missing?
  • There are several lines greater than 79 characters, but this doesn't concern me much.

@g4brielvs
Copy link
Author

Thank @gadomski and @ehinman for your reviews! I'll address the points raised above as soon as possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: under-review
Development

No branches or pull requests

5 participants