From d1b0a8357f709b270a337e1744b134b1c7580fc6 Mon Sep 17 00:00:00 2001 From: Paolo Veglio <paolo.veglio@ssec.wisc.edu> Date: Thu, 2 Feb 2023 22:54:37 +0000 Subject: [PATCH] Confidence tests added. started working on tests for spectral tests --- tests/test_conf.py | 56 ++++++++++++++++++++++++++++++++++++ tests/test_spectral_tests.py | 44 ++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 tests/test_conf.py create mode 100644 tests/test_spectral_tests.py diff --git a/tests/test_conf.py b/tests/test_conf.py new file mode 100644 index 0000000..33a193c --- /dev/null +++ b/tests/test_conf.py @@ -0,0 +1,56 @@ +import os +import numpy as np + +import pytest + +import mvcm.conf as conf + + +@pytest.fixture +def fixturepath(): + return os.path.join(os.path.dirname(__file__), 'fixtures') + + +@pytest.fixture +def rad(): + return np.arange(260, 282) + + +@pytest.fixture +def single_threshold(): + return [267, 270, 273, 1] + + +@pytest.fixture +def double_threshold(): + return [264, 267, 270, 273, 276, 279, 1] + + +@pytest.fixture +def reference_data(fixturepath): + return os.path.join(fixturepath, 'ref_conf.npz') + + +def test_single_threshold(rad, single_threshold, reference_data): + ref_confidence = np.load(reference_data)['ref_sgl'] + ref_confidence_flipped = np.load(reference_data)['ref_sgl_flipped'] + + c = conf.conf_test_new(rad, single_threshold) + assert np.all(c == ref_confidence) + + single_threshold[0:-1] = single_threshold[-2::-1] + c = conf.conf_test_new(rad, single_threshold) + assert np.all(c == ref_confidence_flipped) + + +def test_double_threshold(rad, double_threshold, reference_data): + ref_confidence = np.load(reference_data)['ref_dbl'] + ref_confidence_flipped = np.load(reference_data)['ref_dbl_flipped'] + + c = conf.conf_test_dble(rad, double_threshold) + print(c) + assert np.all(c == ref_confidence) + + double_threshold[0:-1] = double_threshold[-2::-1] + c = conf.conf_test_dble(rad, double_threshold) + assert np.all(c == ref_confidence_flipped) diff --git a/tests/test_spectral_tests.py b/tests/test_spectral_tests.py new file mode 100644 index 0000000..b6ac684 --- /dev/null +++ b/tests/test_spectral_tests.py @@ -0,0 +1,44 @@ +import os +import yaml +import xarray as xr +import numpy as np + +import pytest + +import mvcm.spectral_tests as tst + + +@pytest.fixture +def fixturepath(): + return os.path.join(os.path.dirname(__file__), 'fixtures') + + +@pytest.fixture +def thresholds_file(fixturepath): + return os.path.join(fixturepath, 'thresholds.mvcm.snpp.v0.0.1.yaml') + + +@pytest.fixture +def data_path(): + return '/ships19/hercules/pveglio/mvcm_cleanup' + + +@pytest.fixture +def data_file(data_path): + return os.path.join(data_path, 'viirs_data_A2022173.1312.nc') + + +def test_11um_test(data_file, thresholds_file): + with open(thresholds_file, 'r') as f: + cfg_text = f.read() + thresholds = yaml.safe_load(cfg_text) + + viirs_data = xr.open_dataset(data_file) + cmin = np.ones(viirs_data.latitude.shape) + + for scene_name in ['Ocean_Day', 'Ocean_Night', 'Polar_Day_Ocean', 'Polar_Night_Ocean']: + SceneType = tst.CloudTests(data=viirs_data, + scene_name=scene_name, + thresholds=thresholds) + + cmin, bit = SceneType.test_11um('M15', cmin) -- GitLab