-
Notifications
You must be signed in to change notification settings - Fork 303
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
Reorganize composite YAML files to be more flexible #789
Comments
Summary of discussion from Slack I started a discussion on Slack on this issue because I'm concerned that putting each sensor into a specific category will become limiting as new sensors come online. For example, calling sensors "visir" neatly includes ABI, AHI, AMI, VIIRS, MODIS, etc. Some sensors, however, overlap with the "visir" channels while also carrying other channels; for example, in addition to Vis and IR bands PACE will have UV bands including the O2 bands. Also, different "visir" sensors have different capabilities. For example, the GOES-Imager (GOES <= 15) only has five channels while GOES-ABI (GOES >= 16) has 16 channels and very different capabilities. Given all of that, it seems limiting to classify sensors into groups like "visir", "microwave", etc. This raises two questions.
Ideas
Thoughts on the ideas Generally, I think Option # 1 is problematic for the same reason that using the "visir" designation is problematic. Sensor capabilities aren't easily summarized in a tag (see the GOES-Imager example above). Option # 2 seems promising, but may be limited by load times for YAML that contains Python function references. Maybe it is possible to load YAML while delaying loading the actual Python functions until specific YAML has been settled on? If so, we could cue completely off of which wavelengths each algorithm requires and which wavelengths the sensor offers. Assuming that the YAML can't be loaded in a reasonable amount of time, Option # 3 may be a good option as well, but may require custom handling of the |
In pyyaml, the baseloader class can read yaml without interpreting any python objects. |
@mraspaud Thanks! I was just looking into this and I think I was just about there, but that just saved me some time. |
I have made some progress on this issue. Changes so far can be seen in my fork. So far I am working with option # 2. I have implemented this option for composites, but still need to figure out how to do the same for enhancements, readers, and writers. Readers and writers look straightforwards, but enhancements appear to be a bit more difficult. I wonder if a refactor of some of the enhancement code might be worth while. To Do List
Update loading compositesComposite YAML file structureThe structure of the Previously, the Now, the Composite search and loadingTo accommodate these changes, I updated the composite loader to load all composite YAML files at once, then sort out which to use for the specified sensor. This is surprisingly fast and takes much less than a second. I will time this later to get some real numbers. If this method of loading all YAML at once proves to be too slow at larger scales I believe that there are two options for speeding it up:
Additionally, maybe something can be done to cache this information during a given process so that when many Loading composites from plugin packagesIn reference to #784, I have updated composite loading to use
This loads
|
I'm coming back to this old issue after I searched for any reference to PACE and Jeremy's comment popped up. There have been updates to this topic but haven't been summarized here. Also, reading through these comments reminded me of an issue that @ameraner ran into a couple weeks ago that is important to this design discussion. Andrea's issue: Andrea had a Scene created where a SEVIRI reader and an LI reader were being loaded. The composites that were then loaded first loaded the SEVIRI definitions ( Other updates:
|
The lightning imager works at 777 nm, so VIS/IR is correct.
And we have |
Feature Request
Is your feature request related to a problem? Please describe.
Right now all composites for a particular sensor have to be placed in one single file (
<sensor>.yaml
). This is overall not very flexible or extensible. This is especially important when thinking of extending Satpy as discussed in #784.Describe the solution you'd like
Currently the composites configuration directory is structured as:
@mraspaud and I talked about the possibility of doing something like:
This means that the sensor-specific directories can hold any number of yaml composite files. It also means that the
sensor: visir/viirs
logic currently used in composite configs is no longer needed since the hierarchy is in the directory structure.The
shared.yaml
is something that still needs discussion. If you want composites that combine multiple sensors of different types they would go in the root composites directory.Complications:
Describe any changes to existing user workflow
Custom composites should be defined in this new directory structure. There could/should be a deprecation cycle though to support the existing sensor-based single file loading.
Additional context
Another part of this that is important to mention is the possibility of adding "sensor" and potentially a "platform_name" parameter to composite dependencies to say "this dependency must come from this platform/sensor. You could then make composites of G16 ABI and G17 ABI. Right now that isn't possible. I also just realized that this wouldn't even be possible because a single reader would be used
We also need to remember that #161 is still on the wish list.
The text was updated successfully, but these errors were encountered: