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