UBC-MDS / software-review-2021

1 stars 1 forks source link

Submission: noaastn (Python) #28

Open chenzhao299 opened 3 years ago

chenzhao299 commented 3 years ago

Submitting Author:

Package Name: noaastn One-Line Description of Package: Python package that downloads, processes and visualizes weather data from the NOAA website. Repository Link: noaastn Version submitted: 0.2.6 Editor: Tiffany Timbers Reviewer 1: TBD
Reviewer 2: TBD
Archive: TBD
Version accepted: TBD


Description

The US National Oceanic and Atmospheric Administration (NOAA) collects and provides access to weather data from land-based weather stations within the US and around the world (Land-Based Station Data). One method for accessing these data is through a publically accessible FTP site. This package allows users to easily download data from a given station for a given year, extract several key weather parameters from the raw data files, and visualize the variation in these parameters over time. The weather parameters that are extracted with this package are:

Scope

* Please fill out a pre-submission inquiry before submitting a data visualization package. For more info, see notes on categories of our guidebook.

This package allows users to download and retrieve data from the US National Oceanic and Atmospheric Administration (NOAA) website, carries out data mungling by extracting and cleaning weather parameters, and visualizes the variation in these parameters over time.

The target audience would be anyone who is interested in learning about and analyzing weather data. This package could benefit scientific projects that need an tool to obtain historical weather data from the NOAA's FTP site, and process and visualize key weather parameters.

There are few packages in the python ecosystem like noaa, noaa-coops, noaa-sdk that do analysis related to NOAA weather station data. These tools are more focused on using the NOAA's API service to obtain forecast information. They do not provide an interface to obtain historical weather data from the NOAA's FTP site, process and visualize key weather parameters like this package do.

Tiffany Timbers (@ttimbers)

Technical checks

For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:

Publication options

JOSS Checks - [ ] The package has an **obvious research application** according to JOSS's definition in their [submission requirements][JossSubmissionRequirements]. 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][JossSubmissionRequirements]: "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][JossPaperRequirements] 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: 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.

Code of conduct

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

Editor and Review Templates

Editor and review templates can be found here

mmyz88 commented 3 years ago

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:

Readme requirements The package meets the readme requirements below:

The README should include, from top to bottom:

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:

Functionality

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.md matching JOSS's requirements with:

Final approval (post-review)

Estimated hours spent reviewing: 2.5 hours


Review Comments

Hey noaastn team,

Great job on the package! A really well thought out package in terms of design and portability, I can really see myself using it all the time if I am to perform a weather analysis project. Overall the functionalities are great, tests all passed for me, and there really isn't any errors so what I'm suggesting below could just be nit-picking!

Functionality:

Performance:

Code style:

Documentation:

Overall documentations are nicely done and I love that you included examples in your docstring, which was really helpful. Some minor fixes:

Again, congrats on finishing the package and great job!

Marco

ChadNeald commented 3 years ago

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:

Readme requirements The package meets the readme requirements below:

The README should include, from top to bottom:

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:

Functionality

For packages co-submitting to JOSS (Not Applicable)

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:

Final approval (post-review)

Estimated hours spent reviewing: 3


Review Comments

Hello team noaastn!

Thanks for creating an easy to follow and succinct package for me to review. The goals of the package were very obvious from the start, all functions were clearly explained, and I had no issues installing from TestPyPI. I also ran the test functions using poetry run pytest and everything passed as expected. Continuous integration and deployment all seemed to be in use and working as expected so congrats on getting that sorted!

I really enjoyed the use of the get_weather_plot(). I could see it being tremendously useful if someone just wanted a quick visual glance at the data and they didn't want to fiddle around with the altair specifications.

Documentation

Functions

noaastn.get_weather_data("911650-22536", 1970)

> Error generated from NOAA FTP site: 
> 550 911650-22536-1970.gz: No such file or directory
> 'FTP Error'

I found this error a little ambiguous. Is there an issue with the FTP site or does data not exist for this year? To improve upon this, I think the function itself should test that the year falls within the available limits and if not, outputs an error message that describes the range of years that are available for the given station. It looks like the get_stations_info() returns two columns "start" and "end" which outline the range of years available so perhaps this could be used to test the validity of the year argument.

Overall, it was a pleasure to review the package and learn from all the work you've put in! Feel free to address any or all of the suggestions above. Your team covered everything quite well so most of the suggestions above are small things.

Regards, Chad Neald

spentelow commented 3 years ago

Thanks very much Chad and Marco for the helpful reviews. We had a lot of fun making this package and your suggestions will help us improve it. We plan on implementing a number of the changes you suggested and we will post here when we do.

chenzhao299 commented 3 years ago

Thank you @mmyz88 and @ChadNeald for the helpful reviews! We have addressed the changes based on your suggestions in the last two pull requests. The details are as follows:

Please feel free to check them out. Let us know if you have any more suggestions or advices. Thank you very much!