# # # Distribution Statement A. Approved for public release. Distribution unlimited.
# # #
# # # Author:
# # # Naval Research Laboratory, Marine Meteorology Division
# # #
# # # This program is free software: you can redistribute it and/or modify it under
# # # the terms of the NRLMMD License included with this program. This program is
# # # distributed WITHOUT ANY WARRANTY; without even the implied warranty of
# # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the included license
# # # for more details. If you did not receive the license, for more information see:

Version 1.10.3 (2023-06-23)#

  • Bug fix: Ignore _docs directories in code checks

  • Bug fix: Skip sectored and resampled reads if no variables are available for a sector type

  • Bug fix: Continue startup/processing for bad plugins

  • Breaking change: Update source_name to source_names in product YAMLs

  • Breaking change: Update reader attribute names

    • ‘timestamp’ to ‘time’

    • “original_source_filenames” to “source_file_names”

    • “filename_datetimes” to “source_file_datetimes”

    • zenith and azimuth angles variable names

      • SatZenith->satellite_zenith_angle

      • SatAzimuth->satellite_azimuth_angle

      • SolarZenith->solar_zenith_angle

      • SolarAzimuth->solar_azimuth_angle

      • LunarZenith->lunar_zenith_angle

Breaking Changes#

Update zenith / azimuth angle names#

From issue GEOIPS#266: 2023-07-07,update reader attributes names

SunAzimuth -> solar_azimuth_angle

modified:   geoips/plugins/modules/procflows/single_source.py
modified:   geoips/plugins/modules/readers/abi_netcdf.py
modified:   geoips/plugins/modules/readers/ahi_hsd.py
modified:   geoips/plugins/modules/readers/atms_hdf5.py
modified:   geoips/plugins/modules/readers/modis_hdf4.py
modified:   geoips/plugins/modules/readers/seviri_hrit.py
modified:   geoips/plugins/modules/readers/viirs_netcdf.py
modified:   geoips/plugins/modules/readers/utils/geostationary_geolocation.py

SunZenith -> solar_zenith_angle

modified:   geoips/plugins/modules/readers/abi_netcdf.py
modified:   geoips/plugins/modules/readers/ahi_hsd.py
modified:   geoips/plugins/modules/readers/amsr2_netcdf.py
modified:   geoips/plugins/modules/readers/atms_hdf5.py
modified:   geoips/plugins/modules/readers/ewsg_netcdf.py
modified:   geoips/plugins/modules/readers/modis_hdf4.py
modified:   geoips/plugins/modules/readers/seviri_hrit.py
modified:   geoips/plugins/modules/readers/viirs_netcdf.py
modified:   geoips/plugins/modules/readers/utils/geostationary_geolocation.py
modified:   geoips/plugins/yaml/products/abi.yaml
modified:   geoips/plugins/yaml/products/ahi.yaml
modified:   geoips/plugins/yaml/products/gvar.yaml
modified:   geoips/plugins/yaml/products/modis.yaml
modified:   geoips/plugins/yaml/products/seviri.yaml
modified:   geoips/plugins/yaml/products/viirs.yaml

LunarZenith -> lunar_zenith_angle

modified:   geoips/plugins/modules/readers/viirs_netcdf.py

SatAzimuth -> satellite_azimuth_angle

modified:   geoips/plugins/modules/procflows/single_source.py
modified:   geoips/plugins/modules/readers/abi_netcdf.py
modified:   geoips/plugins/modules/readers/ahi_hsd.py
modified:   geoips/plugins/modules/readers/amsr2_netcdf.py
modified:   geoips/plugins/modules/readers/atms_hdf5.py
modified:   geoips/plugins/modules/readers/ewsg_netcdf.py
modified:   geoips/plugins/modules/readers/modis_hdf4.py
modified:   geoips/plugins/modules/readers/seviri_hrit.py
modified:   geoips/plugins/modules/readers/viirs_netcdf.py
modified:   geoips/plugins/modules/readers/utils/geostationary_geolocation.py

SatZenith -> satellite_zenith_angle

modified:   geoips/plugins/modules/readers/abi_netcdf.py
modified:   geoips/plugins/modules/readers/ahi_hsd.py
modified:   geoips/plugins/modules/readers/amsr2_netcdf.py
modified:   geoips/plugins/modules/readers/amsub_mirs.py
modified:   geoips/plugins/modules/readers/atms_hdf5.py
modified:   geoips/plugins/modules/readers/ewsg_netcdf.py
modified:   geoips/plugins/modules/readers/modis_hdf4.py
modified:   geoips/plugins/modules/readers/seviri_hrit.py
modified:   geoips/plugins/modules/readers/ssmis_binary.py
modified:   geoips/plugins/modules/readers/viirs_netcdf.py
modified:   geoips/plugins/modules/readers/utils/geostationary_geolocation.py

Update “filename_datetimes” to “source_file_datetimes” in readers#

From issue GEOIPS#266: 2023-07-07,update reader attributes names

Stadardize attribute and variable naming

modified:   geoips/plugins/modules/readers/mimic_netcdf.py
modified:   geoips/plugins/modules/readers/ssmi_binary.py
modified:   geoips/plugins/modules/readers/wfabba_ascii.py
modified:   geoips/plugins/modules/readers/windsat_idr37_binary.py

Update “original_source_filenames” to “source_file_names” in readers#

From issue GEOIPS#266: 2023-07-07,update reader attributes names

Stadardize attribute and variable naming

modified:   docs/source/devguide/xarray_standards.rst
modified:   geoips/plugins/modules/output_formatters/metadata_default.py
modified:   geoips/plugins/modules/readers/amsr2_netcdf.py
modified:   geoips/plugins/modules/readers/amsr2_remss_winds_netcdf.py
modified:   geoips/plugins/modules/readers/ascat_uhr_netcdf.py
modified:   geoips/plugins/modules/readers/atms_hdf5.py
modified:   geoips/plugins/modules/readers/ewsg_netcdf.py
modified:   geoips/plugins/modules/readers/gmi_hdf5.py
modified:   geoips/plugins/modules/readers/imerg_hdf5.py
modified:   geoips/plugins/modules/readers/modis_hdf4.py
modified:   geoips/plugins/modules/readers/sar_winds_netcdf.py
modified:   geoips/plugins/modules/readers/smap_remss_winds_netcdf.py
modified:   geoips/plugins/modules/readers/smos_winds_netcdf.py
modified:   geoips/plugins/modules/readers/ssmi_binary.py
modified:   geoips/plugins/modules/readers/ssmis_binary.py
modified:   geoips/plugins/modules/readers/viirs_netcdf.py
modified:   geoips/plugins/modules/readers/wfabba_ascii.py
modified:   geoips/plugins/modules/readers/windsat_remss_winds_netcdf.py
modified:   tests/outputs/amsr2.tc.89H-Physical.imagery_annotated/20200518_073601_IO012020_amsr2_gcom-w1_89H-Physical_140kts_100p00_res1p0-cr300.png.yaml
modified:   tests/outputs/amsr2.tc_overlay.37pct.imagery_annotated_over_Infrared-Gray/20200518_073601_IO012020_amsr2_gcom-w1_37pct_140kts_95p89_res1p0-cr100-bgInfrared-Gray.png.yaml
modified:   tests/outputs/amsr2.tc_overlay.37pct.imagery_annotated_over_Visible/20200518_073601_IO012020_amsr2_gcom-w1_37pct_140kts_95p89_res1p0-cr100-bgVisible.png.yaml
modified:   tests/outputs/amsr2.tc_overlay.89pct.imagery_annotated_over_Infrared-Gray/20200518_073601_IO012020_amsr2_gcom-w1_89pct_140kts_98p32_res1p0-cr100-bgInfrared-Gray.png.yaml
modified:   tests/outputs/amsr2.tc_overlay.89pct.imagery_annotated_over_Visible/20200518_073601_IO012020_amsr2_gcom-w1_89pct_140kts_98p32_res1p0-cr100-bgVisible.png.yaml
modified:   tests/outputs/amsr2_ocean.tc.windspeed.imagery_clean/20200518_073601_IO012020_amsr2_gcom-w1_windspeed_140kts_85p45_1p0-clean.png.yaml
modified:   tests/outputs/ascat_knmi.tc.windbarbs.imagery_windbarbs_clean/20210421_014248_WP022021_ascat_metop-c_windbarbs_120kts_78p20_0p5-clean.png.yaml
modified:   tests/outputs/ascat_low_knmi.tc.windbarbs.imagery_windbarbs/20210421_014156_WP022021_ascat_metop-c_windbarbs_120kts_35p17_1p0.png.yaml
modified:   tests/outputs/ascat_uhr.tc.wind-ambiguities.imagery_windbarbs/20210421_014200_WP022021_ascatuhr_metop-c_wind-ambiguities_120kts_100p00_0p1.png.yaml
modified:   tests/outputs/gmi.tc.89pct.imagery_clean/20200917_172045_AL202020_gmi_GPM_89pct_115kts_78p16_res1p0-cr300-clean.png.yaml
modified:   tests/outputs/hy2.tc.windspeed.imagery_annotated/20211202_084039_WP272021_hscat_hy-2b_windspeed_95kts_97p06_1p0.png.yaml
modified:   tests/outputs/oscat_knmi.tc.windbarbs.imagery_windbarbs/20210209_025351_SH192021_oscat_scatsat-1_windbarbs_135kts_75p10_1p0.png.yaml
modified:   tests/outputs/ssmi.tc.37pct.imagery_clean/20200519_080900_IO012020_ssmi_F15_37pct_110kts_50p65_1p0-clean.png.yaml
modified:   tests/outputs/viirsday.tc.Night-Vis-IR.imagery_annotated/20210209_074210_SH192021_viirs_noaa-20_Night-Vis-IR_130kts_100p00_1p0.png.yaml

Update ‘timestamp’ to ‘time’ in readers#

From issue GEOIPS#266: 2023-07-07, replace timestamp with time

Replace the standard variable name “timestamp” to the CF compliant name “time” in all readers, code, and documentation.

modified:   docs/source/devguide/software_requirements_specification.rst
modified:   docs/source/devguide/xarray_standards.rst
modified:   geoips/plugins/modules/filename_formatters/geoips_fname.py
modified:   geoips/plugins/modules/filename_formatters/tc_fname.py
modified:   geoips/plugins/modules/output_formatters/text_winds.py
modified:   geoips/plugins/modules/readers/amsr2_netcdf.py
modified:   geoips/plugins/modules/readers/amsr2_remss_winds_netcdf.py
modified:   geoips/plugins/modules/readers/amsub_hdf.py
modified:   geoips/plugins/modules/readers/amsub_mirs.py
modified:   geoips/plugins/modules/readers/ascat_uhr_netcdf.py
modified:   geoips/plugins/modules/readers/atms_hdf5.py
modified:   geoips/plugins/modules/readers/gmi_hdf5.py
modified:   geoips/plugins/modules/readers/imerg_hdf5.py
modified:   geoips/plugins/modules/readers/saphir_hdf5.py
modified:   geoips/plugins/modules/readers/sar_winds_netcdf.py
modified:   geoips/plugins/modules/readers/scat_knmi_winds_netcdf.py
modified:   geoips/plugins/modules/readers/sfc_winds_text.py
modified:   geoips/plugins/modules/readers/smap_remss_winds_netcdf.py
modified:   geoips/plugins/modules/readers/smos_winds_netcdf.py
modified:   geoips/plugins/modules/readers/ssmi_binary.py
modified:   geoips/plugins/modules/readers/ssmis_binary.py
modified:   geoips/plugins/modules/readers/viirs_netcdf.py
modified:   geoips/plugins/modules/readers/wfabba_ascii.py
modified:   geoips/plugins/modules/readers/windsat_idr37_binary.py
modified:   geoips/plugins/modules/readers/windsat_remss_winds_netcdf.py
modified:   geoips/xarray_utils/data.py
modified:   geoips/xarray_utils/timestamps.py

Update source_name to source_names in product YAMLs#

From issue GEOIPS#267: 2023-07-05, replace source_name with source_names

Updates to code to loop through each source_name in the source_names list. Note internally the YAML product plugins are still stored with a single source_name, so nothing will change throughout the code base.

modified:   geoips/interfaces/base.py
modified:   geoips/interfaces/yaml_based/products.py

Updates to actual YAML plugins

modified: geoips/plugins/yaml/products/abi.yaml
modified: geoips/plugins/yaml/products/ahi.yaml
modified: geoips/plugins/yaml/products/amsr-e.yaml
modified: geoips/plugins/yaml/products/amsr2.yaml
modified: geoips/plugins/yaml/products/amsu-b.yaml
modified: geoips/plugins/yaml/products/ascat.yaml
modified: geoips/plugins/yaml/products/ascatuhr.yaml
modified: geoips/plugins/yaml/products/atms.yaml
modified: geoips/plugins/yaml/products/gmi.yaml
modified: geoips/plugins/yaml/products/gvar.yaml
modified: geoips/plugins/yaml/products/hscat.yaml
modified: geoips/plugins/yaml/products/imerg.yaml
modified: geoips/plugins/yaml/products/mhs.yaml
modified: geoips/plugins/yaml/products/mimic.yaml
modified: geoips/plugins/yaml/products/modis.yaml
modified: geoips/plugins/yaml/products/oscat.yaml
modified: geoips/plugins/yaml/products/saphir.yaml
modified: geoips/plugins/yaml/products/sar-spd.yaml
modified: geoips/plugins/yaml/products/seviri.yaml
modified: geoips/plugins/yaml/products/smap-spd.yaml
modified: geoips/plugins/yaml/products/smos-spd.yaml
modified: geoips/plugins/yaml/products/ssmi.yaml
modified: geoips/plugins/yaml/products/ssmis.yaml
modified: geoips/plugins/yaml/products/tmi.yaml
modified: geoips/plugins/yaml/products/viirs.yaml
modified: geoips/plugins/yaml/products/windsat.yaml

Updates to YAML schema:

modified: geoips/schema/products/algorithm.yaml
modified: geoips/schema/products/algorithm_colormapper.yaml
modified: geoips/schema/products/algorithm_interpolator_colormapper.yaml
modified: geoips/schema/products/bases/product.yaml
modified: geoips/schema/products/interpolator.yaml
modified: geoips/schema/products/interpolator_algorithm.yaml
modified: geoips/schema/products/interpolator_algorithm_colormapper.yaml
modified: geoips/schema/products/sectored_xarray_dict_to_output_format.yaml
modified: geoips/schema/products/unmodified.yaml
modified: geoips/schema/products/unsectored_xarray_dict_area_to_output_format.yaml
modified: geoips/schema/products/unsectored_xarray_dict_to_output_format.yaml
modified: geoips/schema/products/xarray_dict_to_output_format.yaml

Bug Fixes#

Ignore _docs directories in code checks#

Ignore auto-generated directories named “*_docs” when running flake8 or black.

tests/utils/check_code.sh

Continue startup/processing for bad plugins#

Validation should fail, but processing should be allowed to continue for the plugins that are valid.

geoips/interfaces/base.py

Allow calling tc_file_naming update_extra_field with output_dict=None#

From issue GEOIPS#280: 2023-06-23, Skip sectored and resampled reads for sector types with no variables

Add check under config_based procflow if no variables are available for a given sector type

  • If curr_variables list is empty, skip any sector or resample for requested sector type

modified: geoips/plugins/modules/procflows/config_based.py