-
Notifications
You must be signed in to change notification settings - Fork 35
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
afscgap: Ocean health tools for NOAA AFSC GAP species presence data #93
Comments
This is a continuation of #91 |
Sorry updated issue body to fix a small formatting issue and to clarify that we have two maintainers. |
No worries, edit as much as you need -- we will end up updating the metadata in the YAML header as we go anyway. I will do initial checks and start finding an editor for this review early next week. |
Fantastic thank you! Have a great weekend :) |
You too! 🙂 |
Hi again @sampottinger I'm adding the initial editor checks below. Good news! afscgap passes with flying colors. I made a couple of comments in the checklist but I don't see anything that needs to be addressed--looks like we're ready for review. I will begin looking for an editor this week and update you here as soon as we have found one. Editor in Chief checksHi there! Thank you for submitting your package for pyOpenSci Please check our Python packaging guide for more information on the elements
Editor comments |
Incredible @NickleDave thank you so much! |
Hi @sampottinger and @gizarp, very happy to say that @ocefpaf has generously volunteered to act as editor for this review. He will introduce himself and take the lead from here. |
Thanks @NickleDave and great to meet you @ocefpaf! |
Hi folks! Sorry for the delay in getting here. (Holiday+longweekend in South America this past few days.) @NickleDave I'm catching up with the reading today. Please let me know if there are any urgent button/forms I need press/fill. |
@sampottinger I have a few really minor comments after a first pass. These are not blockers and you don't need to address them for this application! They are really just comments:
PS: I showed your package to a few colleagues at IOOS and they believe that a notebook with an afscgap example would make a nice addition to our Code Lab https://ioos.github.io/ioos_code_lab/content/intro.html. Let me know if you are interested in that. |
Hey @ocefpaf! Thanks so much for all of these. Let me pull together a PR real fast and some comments! |
Thanks again @ocefpaf for your thoughtful comments! Please see below.
This is a good suggestion. I made a PR at SchmidtDSE/afscgap#49. Let me know if this refactor looks good to you!
Yeah the dataset's whole name is NOAA AFSC GAP RACEBACSE FOSS 😅 . Thanks for being understanding on this one. I think we will politely decline this suggestion if that's OK. We have some community continuity concerns like you mentioned and some community sensitivity concerns we want to respect... we have to be a little careful around not appearing to have activity in other datasets (NOAA or otherwise) that may be at different moments in their open science journey than AFSC GAP or not (yet? 🤞) open in the same way that the AFSC GAP API service is. Given our current context, this specificity is probably desirable for at least the medium-term future of the project.
Amazing! We'd be honored 😄. We'd be more than happy to co-develop something with you or another community member in that space. Just for the conversation, I'll highlight that we do have a mybinder example available (source in repo). Totally understand if it might not be quite the right vibe though.
I think that design choice is a strong opinion loosely held. I'm not sure if it is helpful but I'll document some thoughts we had internally but 100% open to additional ideas! We went this route to fulfill a few goals: we wanted to reflect the structure of the API service (any combination of filters in the keyword set is valid in the NOAA API service so there isn't a clear functional decomposition) while also providing documented discoverability. There were some other ideas explored:
Just wanted to list this out but absolutely open to other thoughts! This just felt like the right balance around the broader goals with regards to documentation / discoverability, keeping the type system encapsulated (see below), and maintaining accessibility. |
Better than I thought. Hopefully that will make your life easier in the future.
No arguments here! It is better to keep the name now that the package is out.
It is a good fit. I'll ping you outside of pyOpenSci later to talk more about it. Regarding the query functionality. I do like the idea of the builder chaining and it is not too uncommon. Pandas, pyjanitor and many other mainstream libraries use it. It is quite common in the R world too. Also, many similar packages, like argopy, have something like that. With that said, again, anything I write here is not a blocker for acceptance. The current implementation is good and solid. Just suggestions for the future. PS: I disagree with the learning curve there. Maybe it is my bais but I teach a lot of basic Python and I make sure to expose the students to a flat vs nested model for operations. |
👋 Hi Tylar Murray and Ayush Anand! Thank you for volunteering to review The following resources will help you complete your review:
Please get in touch with any questions or concerns! Your review is due: May 4th, 2023 Reviewers: @7yl4r and @ayushanand18 PS: You can comment, open issue, and/or PR directly in the afscgap for this review. Just make sure to cross-reference them here. |
Thanks @ocefpaf!
Awesome! Merged in.
That's helpful to have your perspective on that. Let me float this around a little bit and see how we feel about migration. I'll try to make a call on that in the next day or so to keep things moving.
Thanks!
Lovely to meet you both! Thank you for your time. :D |
Thank you so much @ocefpaf and @sampottinger! But I do have some observations to make.
def __getitem__(self, key):
return self.__getattribute__(key) This might be more intuitive. Or to make it much easier can we can just go by the name I would love to hear your opinion, and these are surely non-blockers for this review! |
Hello @ayushanand18 and @ocefpaf!
Thanks again for the conversation @ocefpaf! I've started implementing the builder pattern at SchmidtDSE/afscgap#50.
Thanks for the suggestion @ayushanand18! I've started that at SchmidtDSE/afscgap#51
Thanks for this suggestion but I may pass on this if that's ok @ayushanand18. In light of the stuff we did earlier in process, our reasoning is that the library carries an explicit goal to provide docstrings and type annotations for these fields. I think, given the complexity of the data model itself as well as the difficulty in using some of the upstream documentation from NOAA directly in the Python ecosystem, I want to leave those methods there for discoverability and encourage use of those typed interfaces unless the user "opts out" first. To that end, there is a |
Hello all! @ocefpaf, the builder interface was implemented in SchmidtDSE/afscgap#52. |
Thanks @ayushanand18! I have implemented in SchmidtDSE/afscgap#55 |
I am in the process of confirming SchmidtDSE/afscgap#54 which includes the following requested changes before they are resolved on main:
SchmidtDSE/afscgap#54 will also soon include updates to documentation. |
Submitting Author: Sam Pottinger (@sampottinger)
All current maintainers: @sampottinger, @gizarp
Package Name: afscgap
One-Line Description of Package: Community contributed Python-based tools for working with public bottom trawl surveys data from the NOAA Alaska Fisheries Science Center Groundfish Assessment Program (NOAA AFSC GAP).
Repository Link: https://github.com/SchmidtDSE/afscgap
Version submitted: 0.0.7
Editor: @ocefpaf
Reviewer 1: @7yl4r
Reviewer 2: @ayushanand18
Archive:
JOSS DOI:
Version accepted: 0.0.7
Date accepted (month/day/year): 05-30-2023
Code of Conduct & Commitment to Maintain Package
Description
Python-based tool set for interacting with bottom trawl surveys from the Ground Fish Assessment Program (GAP). This provides information about where certain species were seen and when under what conditions, information useful for research in ocean health.
It offers:
Note that GAP is an excellent dataset produced by the Resource Assessment and Conservation Engineering (RACE) Division of the Alaska Fisheries Science Center (AFSC) as part of the National Oceanic and Atmospheric Administration's Fisheries organization (NOAA Fisheries). See also the RACEBASE NOAA InPort entry.
Additional information at https://pyafscgap.org/.
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):
related to data viz category: see presubmission
Domain Specific & Community Partnerships
Community Partnerships
If your package is associated with an
existing community please check below:
This library supports retrieval of data from the official NOAA AFSC GAP REST API service but, as that service on its own is often not sufficient due to certain data limitations, it also offers zero catch inference as required for a number of common types of investigations (hence data processing). Finally, given the needs of the community and the vast breadth of the dataset, it offers a community application to explore the data which, in turn, can generate Python code to help users get started with continued analysis within their own scripts.
This project largely benefits scientific researchers in the ocean health space as this dataset is useful for fisheries management, biodiversity research, and marine science more generally. An example of what this analysis may look like is provided in our example notebook hosted on mybinder.org.
We are not aware of other Python packages working with the AFSC GAP dataset.
@tag
the editor you contacted:Please see our presubmission.
Technical checks
For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:
See NOAA InPort entry. We are primarily using Distribution 6 in the API form. As described, these data are available with the following access constraints: "There are no legal restrictions on access to the data. They reside in public domain and can be freely distributed."
See BSD License within repo.
See project README.md.
See project website and usage section of project website's documentation microsite.
See tutorial notebook on mybinder.
See main tests for package and supplemental tests for website (backend tests and frontend tests).
See CI and CD (library, documentation).
Publication Options
JOSS Checks
See example notebook and app intro.
In addition to query compilation / emulation, we are hopeful that the negative record inference and complementing visualization tool are enough to escape the thin API client status. Coming in at over 10k lines of code, we would seem to fit some of the "hard" criteria that the journal puts forward. Though this library happily provides Pythonic access to an API service, we believe that this contribution as a whole goes beyond a thin client by providing one of the only public mechanisms for conducting investigation requiring negative catch data and provides unique tools for comparative analysis within with the dataset.
paper.md
matching JOSS's requirements with a high-level description in the package root or ininst/
.See https://github.com/SchmidtDSE/afscgap/blob/main/inst/paper.md (or PDF preview at https://github.com/SchmidtDSE/afscgap/blob/main/inst/paper.pdf).
We have submitted to Code Ocean. Please confirm if this will suffice. See 10.24433/CO.4905407.v1 / https://codeocean.com/capsule/4905407/tree/v1
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.
We would be delighted to have your pull requests! 🎉
Confirm each of the following by checking the box.
Please fill out our survey
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
The [editor template can be found here][Editor Template].
The [review template can be found here][Review Template].
The text was updated successfully, but these errors were encountered: