From 17bd300efcd325b52f1ea1f0a123e5b96b2b422f Mon Sep 17 00:00:00 2001 From: Patrick Peglar Date: Wed, 24 Jun 2020 17:36:04 +0100 Subject: [PATCH 1/4] Fix loading since units=None default for Iris3 coords --- iris_grib/_load_convert.py | 13 ++++++++----- .../unit/load_convert/test_satellite_common.py | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/iris_grib/_load_convert.py b/iris_grib/_load_convert.py index 9f5410ad1..1239ac913 100644 --- a/iris_grib/_load_convert.py +++ b/iris_grib/_load_convert.py @@ -1542,7 +1542,7 @@ def hybrid_factories(section, metadata): # Create the model level number scalar coordinate. scaledValue = section['scaledValueOfFirstFixedSurface'] coord = DimCoord(scaledValue, standard_name='model_level_number', - attributes=dict(positive='up')) + units=1, attributes=dict(positive='up')) metadata['aux_coords_and_dims'].append((coord, None)) if typeOfFirstFixedSurface == 118: @@ -1573,7 +1573,7 @@ def hybrid_factories(section, metadata): metadata['aux_coords_and_dims'].append((coord, None)) # Create the sigma scalar coordinate. offset = NV // 2 + scaledValue - coord = AuxCoord(pv[offset], long_name='sigma') + coord = AuxCoord(pv[offset], long_name='sigma', units=1) metadata['aux_coords_and_dims'].append((coord, None)) # Create the associated factory reference. factory = Factory(factory_class, factory_args) @@ -2283,19 +2283,22 @@ def satellite_common(section, metadata): if NB > 0: # Create the satellite series coordinate. satelliteSeries = section['satelliteSeries'] - coord = AuxCoord(satelliteSeries, long_name='satellite_series') + coord = AuxCoord(satelliteSeries, long_name='satellite_series', + units=1) # Add the satellite series coordinate to the metadata aux coords. metadata['aux_coords_and_dims'].append((coord, None)) # Create the satellite number coordinate. satelliteNumber = section['satelliteNumber'] - coord = AuxCoord(satelliteNumber, long_name='satellite_number') + coord = AuxCoord(satelliteNumber, long_name='satellite_number', + units=1) # Add the satellite number coordinate to the metadata aux coords. metadata['aux_coords_and_dims'].append((coord, None)) # Create the satellite instrument type coordinate. instrumentType = section['instrumentType'] - coord = AuxCoord(instrumentType, long_name='instrument_type') + coord = AuxCoord(instrumentType, long_name='instrument_type', + units=1) # Add the instrument type coordinate to the metadata aux coords. metadata['aux_coords_and_dims'].append((coord, None)) diff --git a/iris_grib/tests/unit/load_convert/test_satellite_common.py b/iris_grib/tests/unit/load_convert/test_satellite_common.py index edcdd2e23..d2814ddcd 100644 --- a/iris_grib/tests/unit/load_convert/test_satellite_common.py +++ b/iris_grib/tests/unit/load_convert/test_satellite_common.py @@ -43,11 +43,11 @@ def _check(self, factors=1, values=111): # Check the result. expected = empty_metadata() - coord = AuxCoord(series, long_name='satellite_series') + coord = AuxCoord(series, long_name='satellite_series', units=1) expected['aux_coords_and_dims'].append((coord, None)) - coord = AuxCoord(number, long_name='satellite_number') + coord = AuxCoord(number, long_name='satellite_number', units=1) expected['aux_coords_and_dims'].append((coord, None)) - coord = AuxCoord(instrument, long_name='instrument_type') + coord = AuxCoord(instrument, long_name='instrument_type', units=1) expected['aux_coords_and_dims'].append((coord, None)) standard_name = 'sensor_band_central_radiation_wavenumber' coord = AuxCoord(values / (10.0 ** factors), From dc09c406b04403c26cd0731fac2173abc0da62a7 Mon Sep 17 00:00:00 2001 From: Patrick Peglar Date: Wed, 24 Jun 2020 17:56:38 +0100 Subject: [PATCH 2/4] Grib1 load fixes. --- iris_grib/_grib1_load_rules.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iris_grib/_grib1_load_rules.py b/iris_grib/_grib1_load_rules.py index 30d366558..fd537442b 100644 --- a/iris_grib/_grib1_load_rules.py +++ b/iris_grib/_grib1_load_rules.py @@ -238,9 +238,9 @@ def add_bounded_time_coords(aux_coords_and_dims, grib): if \ (grib.levelType == 'ml') and \ (hasattr(grib, 'pv')): - aux_coords_and_dims.append((AuxCoord(grib.level, standard_name='model_level_number', attributes={'positive': 'up'}), None)) + aux_coords_and_dims.append((AuxCoord(grib.level, standard_name='model_level_number', units=1, attributes={'positive': 'up'}), None)) aux_coords_and_dims.append((DimCoord(grib.pv[grib.level], long_name='level_pressure', units='Pa'), None)) - aux_coords_and_dims.append((AuxCoord(grib.pv[grib.numberOfCoordinatesValues//2 + grib.level], long_name='sigma'), None)) + aux_coords_and_dims.append((AuxCoord(grib.pv[grib.numberOfCoordinatesValues//2 + grib.level], long_name='sigma', units=1), None)) factories.append(Factory(HybridPressureFactory, [{'long_name': 'level_pressure'}, {'long_name': 'sigma'}, Reference('surface_pressure')])) if grib._originatingCentre != 'unknown': From 0e2afbccd3d2ca4d57e36422991804eaddbe607e Mon Sep 17 00:00:00 2001 From: Patrick Peglar Date: Wed, 30 Sep 2020 23:14:47 +0100 Subject: [PATCH 3/4] Modify test to work with latest Iris (Iris3.0 changes). --- .../grib1_load_rules/test_grib1_convert.py | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/iris_grib/tests/unit/grib1_load_rules/test_grib1_convert.py b/iris_grib/tests/unit/grib1_load_rules/test_grib1_convert.py index b8e990bbc..924227141 100644 --- a/iris_grib/tests/unit/grib1_load_rules/test_grib1_convert.py +++ b/iris_grib/tests/unit/grib1_load_rules/test_grib1_convert.py @@ -116,20 +116,17 @@ def test_grib1_hybrid_height(self): self.assertEqual(sigma, {'long_name': 'sigma'}) self.assertEqual(ref, Reference(name='surface_pressure')) - ml_ref = iris.coords.CoordDefn('model_level_number', None, None, - cf_units.Unit('1'), - {'positive': 'up'}, None, False) - lp_ref = iris.coords.CoordDefn(None, 'level_pressure', None, - cf_units.Unit('Pa'), - {}, None, False) - s_ref = iris.coords.CoordDefn(None, 'sigma', None, - cf_units.Unit('1'), - {}, None, False) - - aux_coord_defns = [coord._as_defn() for coord, dim in results[8]] - self.assertIn(ml_ref, aux_coord_defns) - self.assertIn(lp_ref, aux_coord_defns) - self.assertIn(s_ref, aux_coord_defns) + coords_and_dims = results[8] + coord, = [co for co, _ in coords_and_dims + if co.name() == 'model_level_number'] + self.assertEqual(coord.units, '1') + self.assertEqual(coord.attributes['positive'], 'up') + coord, = [co for co, _ in coords_and_dims + if co.name() == 'level_pressure'] + self.assertEqual(coord.units, 'Pa') + coord, = [co for co, _ in coords_and_dims + if co.name() == 'sigma'] + self.assertEqual(coord.units, '1') if __name__ == "__main__": From eed152a8f5c9650e40e8eb8178bdafc6fd2e7851 Mon Sep 17 00:00:00 2001 From: Patrick Peglar Date: Wed, 30 Sep 2020 23:17:55 +0100 Subject: [PATCH 4/4] Modify test CMLs for latest Iris (Iris3.0 changes). --- .../load_convert/data_section/TestGDT30/lambert.cml | 8 ++++---- .../load_convert/sample_file_loads/lambert_grib1.cml | 8 ++++---- .../load_convert/sample_file_loads/lambert_grib2.cml | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/iris_grib/tests/results/integration/load_convert/data_section/TestGDT30/lambert.cml b/iris_grib/tests/results/integration/load_convert/data_section/TestGDT30/lambert.cml index 215a0de88..dff111dc7 100644 --- a/iris_grib/tests/results/integration/load_convert/data_section/TestGDT30/lambert.cml +++ b/iris_grib/tests/results/integration/load_convert/data_section/TestGDT30/lambert.cml @@ -15,16 +15,16 @@ - - + - - + diff --git a/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib1.cml b/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib1.cml index 74fe0a27f..56e96e7a4 100644 --- a/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib1.cml +++ b/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib1.cml @@ -16,16 +16,16 @@ - - + - - + diff --git a/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib2.cml b/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib2.cml index dc938f0ac..813553b5d 100644 --- a/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib2.cml +++ b/iris_grib/tests/results/integration/load_convert/sample_file_loads/lambert_grib2.cml @@ -15,16 +15,16 @@ - - + - - +