JOSS paper preparation - #1249
Conversation
|
I will automatically update this comment whenever this PR is modified
|
jules32
left a comment
There was a problem hiding this comment.
Hi! Great work on this Danny! A few commits and some suggestions to consider.
Co-authored-by: Julia Stewart Lowndes <julia@openscapes.org>
There was a problem hiding this comment.
We could symlink this in to our docs!
There was a problem hiding this comment.
@mfisher87, want to create an issue for it?
There was a problem hiding this comment.
@mfisher87 – pinging you again on this :)
I would say let's not wait. We've demonstrated impact and I think that matters more. Alternatively, let's just go 1.0.0 in the short term and be OK with quickly moving to a 2.0.0 release with breaking changes. I think both are fine, but the latter sets more a precedent of maintainers taking the user impact of breaking changes too lightly. |
Co-authored-by: Matt Fisher <3608264+mfisher87@users.noreply.github.com>
I'm fine with either too. I also think the decision could be on hold until one of the two things – (i) co-author reviews/revisions, (ii) development for v1.0.0 – is completely ready-to-go. |
|
Friendly ping for co-authors who haven't yet had a chance to review (or at least, approve): @andypbarrett @jhkennedy @jrbourbeau @battistowx @Sherwin-14 @betolink @chuckwondo Things have been coming together and I think we are getting close to a complete draft that's ready. Would be great to have everyone's eyes on it, even briefly, before we finalize. Could you each take a look in the next week or two? In particular, please confirm your name, affiliation, and ORCID are correct in the author list. And of course, all other comments welcome. If timing doesn't work, just comment as such so we know where things stand. Thanks! |
Co-authored-by: Jessica Scheick <JessicaS11@users.noreply.github.com>
|
Related: https://earthaccess.zulipchat.com/#narrow/channel/480557-general/topic/JOSS.3F/with/590557057 We're considering / planning going for pyopensci review first, which will give us a stronger review and expedite the JOSS acceptance process if accepted to pyopensci. Thanks @sampottinger for sharing this with me :) |
betolink
left a comment
There was a problem hiding this comment.
I left some comments and suggestions but nothing major, I think this is a good draft so I'm approving as is. Thanks for leading the effort @danielfromearth
|
|
||
| 3. **Access**: Attempts to detect at runtime whether the process is running within AWS `us-west-2` | ||
| and automatically selects the optimal access path -- direct S3 reads for in-region | ||
| access or HTTPS downloads otherwise. Users can manually specify an access path if needed. Files can be opened as `fsspec`-compatible |
There was a problem hiding this comment.
I like the concise way of presenting this, maybe we can add that being format-agnostic and python file-like object compatible makes the library interoperable with the rest of the scientific python ecosystem (aka Pydata/Pangeo)
| open-source tools -- `python-cmr` for search, `fsspec` and `s3fs` for file I/O, | ||
| VirtualiZarr and kerchunk for virtual datasets -- rather than reimplementing their | ||
| functionality. The library's unique contribution is the NASA-specific integration | ||
| layer that binds these tools together. |
There was a problem hiding this comment.
This is the awesomeness, integrating and simplifying the steps a scientist usually do when working with NASA data. Maybe adding an example of time to science reduction both in lines of code and speed through performance optimizations via fsspec and virtualizarr. Tempo or ICESat-2 can be used for this, before N minutes, now N seconds. Before 10 lines of code, now 1.
There was a problem hiding this comment.
Hmm, @betolink, I'm not really sure what would be appropriate for pre-earthaccess code if we want that compared with earthaccess-enabled code... would it be something like this TEMPO S3 Access notebook, which uses boto3, requests, s3fs, etc?
There was a problem hiding this comment.
Sorry for the late reply, yes that would be a good comparison, the boto3, requests, CMR response parsing, s3s credentials etc. @danielfromearth
There was a problem hiding this comment.
@betolink, I ran some benchmark tests, taking the median of three runs comparing s3.download_file(...) to xr.open_mfdataset(earthaccess.open(results), ...), on the Openscapes 2i2c Jupyterhub. Here is a description of the results that we could add to the paper:
| layer that binds these tools together. | |
| layer that binds these tools together. For example, retrieving NASA's TEMPO Level-3 | |
| ozone product [@tempo_o3tot_l3] directly from the Earthdata Cloud with `boto3`, `requests`, and `s3fs` | |
| requires about two dozen lines of code (excluding imports) to set up Earthdata Login | |
| authentication, request and periodically refresh temporary S3 credentials, and | |
| serially transfer each granule. The equivalent `earthaccess` workflow is about four | |
| lines (`login()`, `search_data()`, `open()`, and opening the result with `xarray`) | |
| and additionally handles CMR-based discovery. Because | |
| that integration also composes `fsspec` for byte-range access, streaming a single | |
| variable across 28 granules (6.7 GB) and computing a summary statistic completed in | |
| roughly 45 seconds end-to-end, compared with roughly 78 seconds to download the full | |
| files serially beforehand (medians of three runs on the NASA-Openscapes `us-west-2` | |
| JupyterHub). Constructing or reading virtual data stores over the same files with VirtualiZarr or | |
| icechunk, which enabling reading only requested chunks, can reduce access time further. |
I would add a corresponding citation for the data too, in the paper.bib.
What do you think of this?
Thanks for the ping @danielfromearth! I've been traveling the last few weeks and will finally make it in back to the office on Monday. I'll have a look ASAP, but I suspect it's already in good shape judging from my quick glance here. |
Co-authored-by: Jessica Scheick <JessicaS11@users.noreply.github.com>
jhkennedy
left a comment
There was a problem hiding this comment.
Well, it turns out I do have a bit of feedback 😊 . I think it's in a very good place, and really would be fine to submit with or without my feedback.
Other than the specific things discussed below, I have a pretty big concern around publishing this discussing the automatic cloud-detection logic. That's something we know is technically infeasible to do reliably and we've decided to rip out:
https://github.com/earthaccess-dev/earthaccess/blob/main/docs/governance/decisions/231-aws-us-west-2-checking-method.md
So I'd like to either not mention it or abstract that away in the manuscript language.
Since I have a lot of feedback, I could open a PR into this PR with how I'd resolve my comments, if that's easier. Just let me know.
| - **earthdatalogin** [@earthdatalogin_r] provides similar authentication and access | ||
| functionality for the R programming ecosystem. The two projects share a common motivation and | ||
| serve as complementary tools for their respective language communities. |
There was a problem hiding this comment.
🤔 are there other R/Julia things we should call out?
There was a problem hiding this comment.
Happy to add others - anyone know?
|
|
||
| # AI usage disclosure | ||
|
|
||
| No generative AI tools were used in the development of the `earthaccess` software; all architectural and design decisions were made exclusively by the authors and contributors. |
There was a problem hiding this comment.
Hmm, is this true anymore? @betolink have you been using Claude for the virtulizarr work?
I wonder if we need to adopt an AI policy and say something like "...developers may use AI tools but are responsible for their contributions...".
There was a problem hiding this comment.
I don't see any problem with modifying this to include development work that leveraged AI. Regarding an AI policy: this question might give another nudge to the AI policy discussion of #1294.
There was a problem hiding this comment.
Now this AI policy is being worked on in #1419.
Co-authored-by: Joseph H Kennedy <me@jhkennedy.org>
Co-authored-by: Daniel Kaufman <114174502+danielfromearth@users.noreply.github.com> Co-authored-by: Jessica Scheick <JessicaS11@users.noreply.github.com>
Co-authored-by: Daniel Kaufman <114174502+danielfromearth@users.noreply.github.com>
| Several tools exist for accessing NASA Earth science data, each only addressing a specific | ||
| slice of the workflow: | ||
|
|
||
| - **python-cmr** [@python_cmr] provides a Python wrapper around the CMR API for dataset |
There was a problem hiding this comment.
Part of the suggestion from https://github.com/earthaccess-dev/earthaccess/pull/1249/changes#r3190761529:
| - **python-cmr** [@python_cmr] provides a Python wrapper around the CMR API for dataset | |
| - **python-cmr** [@python_cmr] handles the metadata step (2) by providing a Python wrapper around the CMR API for dataset |
| encapsulate metadata. However, `python-cmr` does not handle authentication, data | ||
| download, or cloud access -- the areas where researchers face many workflow difficulties. | ||
|
|
||
| - **asf_search** [@asf_search] sits between `python-cmr` and `earthaccess`: it focuses on search and discovery but also handles authentication and access. It emerged around the same time as `earthaccess`, from similar access challenges. Unlike `earthaccess`, which is mission- and domain-agnostic, `asf_search` is tailored to synthetic aperture radar (SAR) data, adding domain-specific tooling and functionality. |
There was a problem hiding this comment.
Part of the suggestion from https://github.com/earthaccess-dev/earthaccess/pull/1249/changes#r3190761529:
| - **asf_search** [@asf_search] sits between `python-cmr` and `earthaccess`: it focuses on search and discovery but also handles authentication and access. It emerged around the same time as `earthaccess`, from similar access challenges. Unlike `earthaccess`, which is mission- and domain-agnostic, `asf_search` is tailored to synthetic aperture radar (SAR) data, adding domain-specific tooling and functionality. | |
| - **asf_search** [@asf_search] sits between `python-cmr` and `earthaccess`: it focuses on search and discovery but also handles authentication and access (workflow steps 1–5). It emerged around the same time as `earthaccess`, from similar access challenges. Unlike `earthaccess`, which is mission- and domain-agnostic, `asf_search` is tailored to synthetic aperture radar (SAR) data, adding domain-specific tooling and functionality. |
| - **asf_search** [@asf_search] sits between `python-cmr` and `earthaccess`: it focuses on search and discovery but also handles authentication and access. It emerged around the same time as `earthaccess`, from similar access challenges. Unlike `earthaccess`, which is mission- and domain-agnostic, `asf_search` is tailored to synthetic aperture radar (SAR) data, adding domain-specific tooling and functionality. | ||
|
|
||
|
|
||
| - **icepyx** [@icepyx] provides a mission-specific solution to the general problem solved by earthaccess: search, discovery, authentication, and access to ICESat-2 [@icesat2] data products. Established about a year before earthaccess, it now leverages earthaccess via a mixin to provide authentication and tokening when users perform an action that requires logging in. |
There was a problem hiding this comment.
Part of the suggestion from https://github.com/earthaccess-dev/earthaccess/pull/1249/changes#r3190761529:
| - **icepyx** [@icepyx] provides a mission-specific solution to the general problem solved by earthaccess: search, discovery, authentication, and access to ICESat-2 [@icesat2] data products. Established about a year before earthaccess, it now leverages earthaccess via a mixin to provide authentication and tokening when users perform an action that requires logging in. | |
| - **icepyx** [@icepyx] provides a mission-specific solution to the general problem solved by earthaccess: search, discovery, authentication, and access to ICESat-2 [@icesat2] data products. Established about a year before earthaccess, it handles workflow steps 1, 2, and 5 on its own and now leverages earthaccess via a mixin to provide authentication and tokening when users perform an action that requires logging in. |
| - **earthdatalogin** [@earthdatalogin_r] provides similar authentication and access | ||
| functionality for the R programming ecosystem. The two projects share a common motivation and |
There was a problem hiding this comment.
Part of the suggestion from https://github.com/earthaccess-dev/earthaccess/pull/1249/changes#r3190761529:
| - **earthdatalogin** [@earthdatalogin_r] provides similar authentication and access | |
| functionality for the R programming ecosystem. The two projects share a common motivation and | |
| - **earthdatalogin** [@earthdatalogin_r] provides similar authentication and access | |
| functionality (steps 3–5) for the R programming ecosystem. The two projects share a common motivation and |
Manuscript draft
This PR is intended for revisions and improvements to the manuscript draft being prepared for submission to the Journal of Open Source Software (JOSS).
Paper format: The manuscript is prepared as a Markdown (
paper.md) file with references in apaper.bibfile, following the JOSS formatting guidelines.For a PDF preview: With docker installed locally, a PDF preview of the draft manuscript can be generated, by running the following from the earthaccess root directory (as described in the JOSS guidelines's docker section):
📚 Documentation preview 📚: https://earthaccess--1249.org.readthedocs.build/en/1249/