From 1acec110b1311d1cd52731c102690d74c1fbbd57 Mon Sep 17 00:00:00 2001 From: Joleen Feltz Date: Tue, 22 Jun 2021 06:14:55 -0500 Subject: [PATCH 1/3] Remove valid_range from attributes after it is applied to data --- satpy/readers/virr_l1b.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/satpy/readers/virr_l1b.py b/satpy/readers/virr_l1b.py index a572d245b8..1460fc7be0 100644 --- a/satpy/readers/virr_l1b.py +++ b/satpy/readers/virr_l1b.py @@ -92,10 +92,11 @@ def get_dataset(self, dataset_id, ds_info): file_key = file_key.replace('Data/', '') data = self[file_key] band_index = ds_info.get('band_index') + valid_range = data.attrs.pop('valid_range', None) if band_index is not None: data = data[band_index] - data = data.where((data >= self[file_key + '/attr/valid_range'][0]) & - (data <= self[file_key + '/attr/valid_range'][1])) + data = data.where((data >= valid_range[0]) & + (data <= valid_range[1])) if 'Emissive' in file_key: slope = self._correct_slope(self[self.l1b_prefix + 'Emissive_Radiance_Scales']. data[:, band_index][:, np.newaxis]) @@ -121,8 +122,9 @@ def get_dataset(self, dataset_id, ds_info): else: slope = self._correct_slope(self[file_key + '/attr/Slope']) intercept = self[file_key + '/attr/Intercept'] - data = data.where((data >= self[file_key + '/attr/valid_range'][0]) & - (data <= self[file_key + '/attr/valid_range'][1])) + + data = data.where((data >= valid_range[0]) & + (data <= valid_range[1])) data = data * slope + intercept new_dims = {old: new for old, new in zip(data.dims, ('y', 'x'))} data = data.rename(new_dims) From 0b9009edada23dc375aa2c20c9aeb1fecc0d9253 Mon Sep 17 00:00:00 2001 From: Joleen Feltz Date: Tue, 22 Jun 2021 06:26:52 -0500 Subject: [PATCH 2/3] Add test to check if valid_range is removed from the data_array attributes Update reader to check if valid_range exists before using --- satpy/tests/reader_tests/test_virr_l1b.py | 1 + 1 file changed, 1 insertion(+) diff --git a/satpy/tests/reader_tests/test_virr_l1b.py b/satpy/tests/reader_tests/test_virr_l1b.py index 49f829e0b7..bce898bb59 100644 --- a/satpy/tests/reader_tests/test_virr_l1b.py +++ b/satpy/tests/reader_tests/test_virr_l1b.py @@ -160,6 +160,7 @@ def _fy3_helper(self, platform_name, reader, Emissive_units): self.assertEqual(('longitude', 'latitude'), attributes['coordinates']) self.assertEqual(band_values[dataset['name']], round(float(np.array(ds[ds.shape[0] // 2][ds.shape[1] // 2])), 6)) + assert "valid_range" not in ds.attrs def test_fy3b_file(self): """Test that FY3B files are recognized.""" From a7e4b317544713e5f05418bd819230ece8d0ed09 Mon Sep 17 00:00:00 2001 From: Joleen Feltz Date: Tue, 22 Jun 2021 06:40:50 -0500 Subject: [PATCH 3/3] BUG FIX: This commits the check for valid_range before applying. --- satpy/readers/virr_l1b.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/satpy/readers/virr_l1b.py b/satpy/readers/virr_l1b.py index 1460fc7be0..1bb84b19eb 100644 --- a/satpy/readers/virr_l1b.py +++ b/satpy/readers/virr_l1b.py @@ -95,8 +95,9 @@ def get_dataset(self, dataset_id, ds_info): valid_range = data.attrs.pop('valid_range', None) if band_index is not None: data = data[band_index] - data = data.where((data >= valid_range[0]) & - (data <= valid_range[1])) + if valid_range: + data = data.where((data >= valid_range[0]) & + (data <= valid_range[1])) if 'Emissive' in file_key: slope = self._correct_slope(self[self.l1b_prefix + 'Emissive_Radiance_Scales']. data[:, band_index][:, np.newaxis]) @@ -123,8 +124,9 @@ def get_dataset(self, dataset_id, ds_info): slope = self._correct_slope(self[file_key + '/attr/Slope']) intercept = self[file_key + '/attr/Intercept'] - data = data.where((data >= valid_range[0]) & - (data <= valid_range[1])) + if valid_range: + data = data.where((data >= valid_range[0]) & + (data <= valid_range[1])) data = data * slope + intercept new_dims = {old: new for old, new in zip(data.dims, ('y', 'x'))} data = data.rename(new_dims)