Open gerritholl opened 4 years ago
So that sounds like your files (the most up to date version of these files?) do not support all the variables that are configured for the reader. If the reader isn't dynamically loading datasets (available_datasets
in the reader) then this is expected in my opinion.
The fix would be to update the reader to tell the difference between the file types and define datasets as belonging to a particular file type. When that file type isn't available the base reader should already automatically filter those out as "not available".
By expected, do you mean desirable, or "an expected bug" due to a limitation in the reader? When a method is called available_dataset_ids
and its docstring states it returns "loadable datasets" and "what files have been provided to the scene" then I would expect that the list of IDs returned are available and loadable.
Expected bug due to a limitation in the reader.
At some point between Satpy 0.21 and Satpy 0.34, the situation has changed. With Satpy 0.34, the MCVE results in what appears to be an infinite loop, which is worse than KeyError
.
Wow, very interesting. So for the first set of issues we see errors/tracebacks like this:
File "/data/gholl/checkouts/satpy/satpy/readers/yaml_reader.py", line 699, in _load_dataset
projectable = fh.get_dataset(dsid, ds_info)
File "/data/gholl/checkouts/satpy/satpy/readers/nwcsaf_nc.py", line 144, in get_dataset
variable = self.nc[file_key]
And:
Traceback (most recent call last):
File "/data/gholl/mambaforge/envs/py310/lib/python3.10/site-packages/xarray/core/dataset.py", line 1393, in _construct_dataarray
variable = self._variables[name]
KeyError: 'crr_accum_pal'
These are clearly (I think) the reader thinking that a variable should be in the file, but it isn't. This is the same general issue as the original problem where the reader isn't "smart" enough to say "this variable could be loaded from the file, but this version of the file doesn't have it".
The bigger issue as you've pointed out is the infinite ancillary loading:
File "/data/gholl/checkouts/satpy/satpy/readers/yaml_reader.py", line 882, in _load_ancillary_variables
self.load(loadable_av_ids, previous_datasets=datasets, **kwargs)
File "/data/gholl/checkouts/satpy/satpy/readers/yaml_reader.py", line 968, in load
self._load_ancillary_variables(all_datasets, **kwargs)
So this is the result of the main variable loading having one or more variables listed as ancillary variables that need to be loaded.
My best guess is that the files have a circular set of dependencies between two or more variables. Can you show the ncdump -h
of the file? Or a portion of it? The fix for this would be either:
I think both might be a good idea.
Describe the bug
When loading a
Scene
with thenwcsaf-geo
reader and trying to load all available datasets usingscn.load(scn.available_dataset_ids())
, aKeyError
is thrown. Several other datasets also fail to load with suppressedKeyError
s.To Reproduce
Expected behavior
I expect all available datasets to be loaded successfully and preferably without warnings.
Actual results
It fails with a
KeyError
exception and a traceback ultimate thrown byxarray.core.dataset._get_virtual_variable
. The error isKeyError: 'ihsai_status_flag'
. The full console output (stdout + stderr):Environment Info:
from satpy.config import check_satpy; check_satpy()
]Additional context
To test which ones fail, I tried to run
but I got inconsistent results between runs; some datasets may fail with
KeyError
, perhaps depending on the order in which they are attempted to be loaded. The exception can also be triggered by loading just "ihsai_status_flag".