satpy icon indicating copy to clipboard operation
satpy copied to clipboard

Add first draft reader for MWS onboard EPS-SG-A

Open adybbroe opened this issue 2 years ago • 5 comments

This is a first draft reader for the EPS-SG MWS level-1b netCDF file format.

  • [ ] Closes #xxxx
  • [x] Tests added
  • [ ] Fully documented
  • [x] Add your name to AUTHORS.md if not there already

This is an early draft so far, and several things needs to be addressed:

  • [x] Rearrange the FrquencyRange and related classes defined in the AAPP-MHS reader so they can be reused in several readers
  • [x] Add unittests for the reader
  • [x] Decide how the channel comparisons should behave!
  • [x] Add handling of auxiliary data sets, see FCI and VII readers

adybbroe avatar Jun 02 '22 10:06 adybbroe

Here a sketch of some parts of the MWS temperature sounding channels, to illustrate the quadruple side bands (as for instance also seen on AMSU-A):

quadrouble_side_band_mws

adybbroe avatar Jun 02 '22 10:06 adybbroe

Codecov Report

Merging #2120 (40e8461) into main (acd0745) will increase coverage by 0.10%. The diff coverage is 98.93%.

@@            Coverage Diff             @@
##             main    #2120      +/-   ##
==========================================
+ Coverage   94.03%   94.14%   +0.10%     
==========================================
  Files         289      293       +4     
  Lines       44564    45091     +527     
==========================================
+ Hits        41904    42449     +545     
+ Misses       2660     2642      -18     
Flag Coverage Δ
behaviourtests 4.68% <0.00%> (-0.07%) :arrow_down:
unittests 94.79% <98.93%> (+0.09%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
satpy/readers/yaml_reader.py 97.50% <ø> (+0.22%) :arrow_up:
satpy/readers/pmw_channels_definitions.py 97.60% <97.60%> (ø)
satpy/readers/mws_l1b.py 98.51% <98.51%> (ø)
satpy/readers/aapp_mhs_amsub_l1c.py 95.89% <100.00%> (+2.76%) :arrow_up:
satpy/tests/reader_tests/test_mws_l1b_nc.py 100.00% <100.00%> (ø)
satpy/tests/test_dataset.py 100.00% <100.00%> (ø)
satpy/tests/test_yaml_reader.py 99.60% <100.00%> (ø)
satpy/tests/reader_tests/test_hrit_base.py 96.55% <0.00%> (-1.67%) :arrow_down:
satpy/readers/utils.py 91.95% <0.00%> (-0.39%) :arrow_down:
satpy/utils.py 24.69% <0.00%> (-0.31%) :arrow_down:
... and 23 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

codecov[bot] avatar Jun 02 '22 10:06 codecov[bot]

Coverage Status

Coverage increased (+0.1%) to 94.741% when pulling 40e8461c7f5401540484e2f64d3845c4a90cf43c on adybbroe:add-epssg-mws-level1b-reader into acd074530f1eeaa860c1d18de22ecbfd75be8166 on pytroll:main.

coveralls avatar Jun 02 '22 10:06 coveralls

I have a hard time deciding how the channel/band inter-comparison should behave here! :-|

adybbroe avatar Jun 08 '22 14:06 adybbroe

Here, a quick example usage:

In [1]: from satpy import Scene
In [2]: AREAID = 'nsper_swe'
In [3]: FILENAMES = ['/path-to-my-epssg-mws-testdata/W_XX-EUMETSAT-Darmstadt,SAT,SGA1-MWS-1B-RAD_C_EUMT_20210609095009_G_D_20070912084321_20070912102225_T_N____.nc']
In [4]: scn = Scene(filenames=FILENAMES, reader='mws_l1b_nc')
In [5]: from satpy.dataset import DataQuery
In [6]: frq_24 = DataQuery(frequency_range=23.8)
In [7]: scn.load([frq_24])
In [8]: local = scn.resample(AREAID)
In [9]: local.show(frq_24)

It is also possible to load the data simply by specifying the channel number, like: scn.load(['1'])

mws_testdata_23_8_bw

adybbroe avatar Jun 15 '22 11:06 adybbroe

LGTM. Regarding the title, is this still a first draft?

I changed the title. It is adding a reader. Then as this has been developed on test data and we cannot start testing and use it in real applications I suppose there might be things we would like to change and improve. But we don't know yet.

adybbroe avatar Sep 05 '22 13:09 adybbroe