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

Generalize how we handle 3+ dimensional data in GeoIPS #801

Open
4 tasks
evrose54 opened this issue Oct 23, 2024 · 1 comment
Open
4 tasks

Generalize how we handle 3+ dimensional data in GeoIPS #801

evrose54 opened this issue Oct 23, 2024 · 1 comment
Labels
discussion required This issue requires discussion before implementation refactor Code refactoring updates
Milestone

Comments

@evrose54
Copy link
Contributor

Requested Update

Description

Currently GeoIPS really only handles 2D data, in the format of (x, y). This assumption makes it easy for all plugins to know the input format and shape of incoming data. However, with the addition of OVERCAST, we need to consider how to handle 3D data (z, y, x) at any point. Additionally, #427 adds a 3rd dimension, but in this case it's time. We could add custom logic to necessary plugins, however that would become cumbersome and hard to maintain. Instead, we should consider a generic approach to handling 3+ dimensional data, so plugins know the order of the dimensions, as well as what to do with them. This probably requires discussion.

Background and Motivation

This issue stems from a conversation @jsolbrig and I had on #763 about how I handled 3D Data (z, y, x) in the unprojected_image output formatter. I added custom logic to loop over each vertical slice of the data, and while this works, there are likely different dimensions that will be supplied (time, y, x), different ordering of dimensions (x, y, z), and other complexities that we'll need to address. Instead of adding custom logic for each use case, we should generalize where possible.

Alternative Solutions

Add custom logic for each use case to plugins which are affected by your product (not recommended).

Code to demonstrate issue

#763 geoips/plugins/modules/output_formatters/unprojected_image.py:call.

Checklist for Completion

  • Discuss methods in which we could generalize handling 3+ dimensional data.
  • Choose the route we are going to take
  • Implement those decisions
  • Add unit tests and/or integration tests to test these new changes.
@evrose54 evrose54 added refactor Code refactoring updates discussion required This issue requires discussion before implementation labels Oct 23, 2024
@evrose54 evrose54 added this to the 2.0 milestone Oct 23, 2024
@evrose54
Copy link
Contributor Author

Additionally, we could handle 3+ dimensional data in different manners. For example, the code I implemented in unprojected_imagery on PR #763 takes vertical cross sections of the data. However we could also take horizontal (latitudinal) cross sections of the data, or longitudinal cross sections of the data, which would result in different outputs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion required This issue requires discussion before implementation refactor Code refactoring updates
Projects
None yet
Development

No branches or pull requests

1 participant