From 5f7e75177797e3de6048fc2100e2cb1fc11ce302 Mon Sep 17 00:00:00 2001 From: zxdawn Date: Fri, 13 Dec 2024 20:55:13 +0100 Subject: [PATCH 1/9] update scale factor and offset --- satpy/readers/viirs_l1b.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/satpy/readers/viirs_l1b.py b/satpy/readers/viirs_l1b.py index 7dd3079dbb..ba8cf8d2ea 100644 --- a/satpy/readers/viirs_l1b.py +++ b/satpy/readers/viirs_l1b.py @@ -235,6 +235,11 @@ def get_dataset(self, dataset_id, ds_info): if factors[0] != 1 or factors[1] != 0: data *= factors[0] data += factors[1] + + # update scale_factor and scale_offset + data.attrs['scale_factor'] = scale_factor + data.attrs['add_offset'] = scale_offset + # rename dimensions to correspond to satpy's 'y' and 'x' standard if "number_of_lines" in data.dims: data = data.rename({"number_of_lines": "y", "number_of_pixels": "x"}) From e31f9ee5b3dc77c589d33aa8bf0cacceeede474b Mon Sep 17 00:00:00 2001 From: zxdawn Date: Fri, 13 Dec 2024 21:02:58 +0100 Subject: [PATCH 2/9] Replace single quotes with double quotes --- satpy/readers/viirs_l1b.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/satpy/readers/viirs_l1b.py b/satpy/readers/viirs_l1b.py index ba8cf8d2ea..5564ad8a7e 100644 --- a/satpy/readers/viirs_l1b.py +++ b/satpy/readers/viirs_l1b.py @@ -237,8 +237,8 @@ def get_dataset(self, dataset_id, ds_info): data += factors[1] # update scale_factor and scale_offset - data.attrs['scale_factor'] = scale_factor - data.attrs['add_offset'] = scale_offset + data.attrs["scale_factor"] = scale_factor + data.attrs["add_offset"] = scale_offset # rename dimensions to correspond to satpy's 'y' and 'x' standard if "number_of_lines" in data.dims: From cac982b9e541c74b703d7b96ba0ea133bb066223 Mon Sep 17 00:00:00 2001 From: zxdawn Date: Fri, 13 Dec 2024 21:40:02 +0100 Subject: [PATCH 3/9] fix wrong assignment --- satpy/readers/viirs_l1b.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/satpy/readers/viirs_l1b.py b/satpy/readers/viirs_l1b.py index 5564ad8a7e..10e064aac2 100644 --- a/satpy/readers/viirs_l1b.py +++ b/satpy/readers/viirs_l1b.py @@ -237,8 +237,8 @@ def get_dataset(self, dataset_id, ds_info): data += factors[1] # update scale_factor and scale_offset - data.attrs["scale_factor"] = scale_factor - data.attrs["add_offset"] = scale_offset + data.attrs["scale_factor"] = factors[0] + data.attrs["add_offset"] = factors[1] # rename dimensions to correspond to satpy's 'y' and 'x' standard if "number_of_lines" in data.dims: From 30ddab29bc1f976eb553104bb508d8e180a144ca Mon Sep 17 00:00:00 2001 From: zxdawn Date: Sat, 14 Dec 2024 19:30:37 +0100 Subject: [PATCH 4/9] add scale_offset test --- satpy/tests/reader_tests/test_viirs_l1b.py | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/satpy/tests/reader_tests/test_viirs_l1b.py b/satpy/tests/reader_tests/test_viirs_l1b.py index b2a5c4b476..1977080f66 100644 --- a/satpy/tests/reader_tests/test_viirs_l1b.py +++ b/satpy/tests/reader_tests/test_viirs_l1b.py @@ -338,6 +338,34 @@ def test_load_dnb_angles(self): assert v.attrs["area"].lats.attrs["rows_per_scan"] == 2 assert v.attrs["sensor"] == "viirs" + def test_scale_factor_and_offset_update(self): + """Test if scale_factor and add_offset are updated correctly.""" + from satpy.readers import load_reader + from satpy.tests.utils import make_dataid + r = load_reader(self.reader_configs) + loadables = r.select_files_from_pathnames([ + "VL1BM_snpp_d20161130_t012400_c20161130054822.nc", + "VGEOM_snpp_d20161130_t012400_c20161130054822.nc", + ]) + r.create_filehandlers(loadables) + datasets = r.load(["M01", + "M12", + "I04", + make_dataid(name="M01", calibration="radiance"), + make_dataid(name="M12", calibration="radiance"), + make_dataid(name="I04", calibration="radiance"), + ]) + for v in datasets.values(): + if v.attrs["units"] == "%": + assert int(v.attrs['scale_factor']) == 110 + assert int(v.attrs['add_offset']) == 10 + elif v.attrs["units"] == "K": + assert v.attrs['scale_factor'] == 1 + assert v.attrs['add_offset'] == 0 + elif v.attrs["calibration"] == "radiance" and v.attrs["units"] == "W m-2 um-1 sr-1": + assert v.attrs['scale_factor'] == 1.1 + assert v.attrs['add_offset'] == 0.1 + class TestVIIRSL1BReaderDayNight(TestVIIRSL1BReaderDay): """Test VIIRS L1b with night data. From c4f4b5a68bf45d32c300f5efc5399f8ec4ceb921 Mon Sep 17 00:00:00 2001 From: zxdawn Date: Sat, 14 Dec 2024 19:31:52 +0100 Subject: [PATCH 5/9] Replace single quotes with double quotes --- satpy/tests/reader_tests/test_viirs_l1b.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/satpy/tests/reader_tests/test_viirs_l1b.py b/satpy/tests/reader_tests/test_viirs_l1b.py index 1977080f66..885679dcb5 100644 --- a/satpy/tests/reader_tests/test_viirs_l1b.py +++ b/satpy/tests/reader_tests/test_viirs_l1b.py @@ -357,14 +357,14 @@ def test_scale_factor_and_offset_update(self): ]) for v in datasets.values(): if v.attrs["units"] == "%": - assert int(v.attrs['scale_factor']) == 110 - assert int(v.attrs['add_offset']) == 10 + assert int(v.attrs["scale_factor"]) == 110 + assert int(v.attrs["add_offset"]) == 10 elif v.attrs["units"] == "K": - assert v.attrs['scale_factor'] == 1 - assert v.attrs['add_offset'] == 0 + assert v.attrs["scale_factor"] == 1 + assert v.attrs["add_offset"] == 0 elif v.attrs["calibration"] == "radiance" and v.attrs["units"] == "W m-2 um-1 sr-1": - assert v.attrs['scale_factor'] == 1.1 - assert v.attrs['add_offset'] == 0.1 + assert v.attrs["scale_factor"] == 1.1 + assert v.attrs["add_offset"] == 0.1 class TestVIIRSL1BReaderDayNight(TestVIIRSL1BReaderDay): From 9f9dbda9dacaee0d07be7810123eac038e871185 Mon Sep 17 00:00:00 2001 From: zxdawn Date: Sat, 14 Dec 2024 19:33:44 +0100 Subject: [PATCH 6/9] remove whitespace --- satpy/tests/reader_tests/test_viirs_l1b.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/satpy/tests/reader_tests/test_viirs_l1b.py b/satpy/tests/reader_tests/test_viirs_l1b.py index 885679dcb5..01a3b6e346 100644 --- a/satpy/tests/reader_tests/test_viirs_l1b.py +++ b/satpy/tests/reader_tests/test_viirs_l1b.py @@ -365,7 +365,7 @@ def test_scale_factor_and_offset_update(self): elif v.attrs["calibration"] == "radiance" and v.attrs["units"] == "W m-2 um-1 sr-1": assert v.attrs["scale_factor"] == 1.1 assert v.attrs["add_offset"] == 0.1 - + class TestVIIRSL1BReaderDayNight(TestVIIRSL1BReaderDay): """Test VIIRS L1b with night data. From 45f7774db75cb0351300f85138fb031430a967ca Mon Sep 17 00:00:00 2001 From: zxdawn Date: Thu, 2 Jan 2025 15:08:41 +0100 Subject: [PATCH 7/9] remove scale_factor and add_offset --- satpy/readers/viirs_l1b.py | 4 ++-- satpy/tests/reader_tests/test_viirs_l1b.py | 13 +++---------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/satpy/readers/viirs_l1b.py b/satpy/readers/viirs_l1b.py index 10e064aac2..0499a6a08a 100644 --- a/satpy/readers/viirs_l1b.py +++ b/satpy/readers/viirs_l1b.py @@ -237,8 +237,8 @@ def get_dataset(self, dataset_id, ds_info): data += factors[1] # update scale_factor and scale_offset - data.attrs["scale_factor"] = factors[0] - data.attrs["add_offset"] = factors[1] + data.attrs.pop("scale_factor", None) + data.attrs.pop("add_offset", None) # rename dimensions to correspond to satpy's 'y' and 'x' standard if "number_of_lines" in data.dims: diff --git a/satpy/tests/reader_tests/test_viirs_l1b.py b/satpy/tests/reader_tests/test_viirs_l1b.py index 01a3b6e346..0270492be8 100644 --- a/satpy/tests/reader_tests/test_viirs_l1b.py +++ b/satpy/tests/reader_tests/test_viirs_l1b.py @@ -339,7 +339,7 @@ def test_load_dnb_angles(self): assert v.attrs["sensor"] == "viirs" def test_scale_factor_and_offset_update(self): - """Test if scale_factor and add_offset are updated correctly.""" + """Test if scale_factor and add_offset are removed correctly.""" from satpy.readers import load_reader from satpy.tests.utils import make_dataid r = load_reader(self.reader_configs) @@ -356,15 +356,8 @@ def test_scale_factor_and_offset_update(self): make_dataid(name="I04", calibration="radiance"), ]) for v in datasets.values(): - if v.attrs["units"] == "%": - assert int(v.attrs["scale_factor"]) == 110 - assert int(v.attrs["add_offset"]) == 10 - elif v.attrs["units"] == "K": - assert v.attrs["scale_factor"] == 1 - assert v.attrs["add_offset"] == 0 - elif v.attrs["calibration"] == "radiance" and v.attrs["units"] == "W m-2 um-1 sr-1": - assert v.attrs["scale_factor"] == 1.1 - assert v.attrs["add_offset"] == 0.1 + assert ('scale_factor' not in v.attrs) + assert ('add_offset' not in v.attrs) class TestVIIRSL1BReaderDayNight(TestVIIRSL1BReaderDay): From 7369fa5a5ae138cc273c9c25068bbbc8f2d3f863 Mon Sep 17 00:00:00 2001 From: zxdawn Date: Thu, 2 Jan 2025 15:09:56 +0100 Subject: [PATCH 8/9] typo fix --- satpy/tests/reader_tests/test_viirs_l1b.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/satpy/tests/reader_tests/test_viirs_l1b.py b/satpy/tests/reader_tests/test_viirs_l1b.py index 0270492be8..7231d1a1a5 100644 --- a/satpy/tests/reader_tests/test_viirs_l1b.py +++ b/satpy/tests/reader_tests/test_viirs_l1b.py @@ -356,8 +356,8 @@ def test_scale_factor_and_offset_update(self): make_dataid(name="I04", calibration="radiance"), ]) for v in datasets.values(): - assert ('scale_factor' not in v.attrs) - assert ('add_offset' not in v.attrs) + assert ("scale_factor" not in v.attrs) + assert ("add_offset" not in v.attrs) class TestVIIRSL1BReaderDayNight(TestVIIRSL1BReaderDay): From 79e41c6a2b478e898498c5b0d2746bb596b7ff5b Mon Sep 17 00:00:00 2001 From: zxdawn Date: Thu, 2 Jan 2025 15:11:02 +0100 Subject: [PATCH 9/9] update comment --- satpy/readers/viirs_l1b.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/satpy/readers/viirs_l1b.py b/satpy/readers/viirs_l1b.py index 0499a6a08a..5a420c6057 100644 --- a/satpy/readers/viirs_l1b.py +++ b/satpy/readers/viirs_l1b.py @@ -236,7 +236,7 @@ def get_dataset(self, dataset_id, ds_info): data *= factors[0] data += factors[1] - # update scale_factor and scale_offset + # remove scale_factor and scale_offset data.attrs.pop("scale_factor", None) data.attrs.pop("add_offset", None)