From 62b72d97a1a4c65b86615b1efcb2b1e5068c5742 Mon Sep 17 00:00:00 2001 From: Thibault Hallouin <thibault.hallouin@inrae.fr> Date: Fri, 24 Feb 2023 19:06:36 +0100 Subject: [PATCH] add "completeness" diagnostics --- tests/test_determinist.py | 44 +++++++++++++++++++++++++++++++++++++++ tests/test_probabilist.py | 43 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/tests/test_determinist.py b/tests/test_determinist.py index 8ff4605..980493a 100644 --- a/tests/test_determinist.py +++ b/tests/test_determinist.py @@ -16,6 +16,11 @@ _all_metrics = ( 'NSE', 'KGE', 'KGE_D', 'KGEPRIME', 'KGEPRIME_D', ) +# list all available deterministic diagnostics +_all_diags = ( + 'completeness' +) + class TestMetrics(unittest.TestCase): @@ -203,6 +208,45 @@ class TestUncertainty(unittest.TestCase): ) +class TestDiagnostics(unittest.TestCase): + + def test_completeness(self): + obs = numpy.array( + [[4.7, 4.3, numpy.nan, 2.7, 4.1, 5.0]] + ) + + prd = numpy.array( + [[5.3, numpy.nan, 5.7, 2.3, 3.3, 4.1], + [4.3, 4.2, 4.7, 4.3, 3.3, 2.8], + [5.3, numpy.nan, 5.7, 2.3, 3.8, numpy.nan]] + ) + + msk = numpy.array( + [[[True, True, True, False, True, True], + [True, True, True, True, True, True]], + [[True, True, True, True, True, False], + [True, True, True, True, True, True]], + [[True, True, True, False, False, True], + [True, True, True, True, True, True]]] + ) + + exp = numpy.array( + [[[3.], + [4.]], + [[4.], + [5.]], + [[1.], + [3.]]] + ) + + numpy.testing.assert_almost_equal( + exp, + evalhyd.evald( + obs, prd, ["NSE"], t_msk=msk, diagnostics=["completeness"] + )[1] + ) + + if __name__ == '__main__': test_loader = unittest.TestLoader() test_suite = unittest.TestSuite() diff --git a/tests/test_probabilist.py b/tests/test_probabilist.py index c65da24..04d26c6 100644 --- a/tests/test_probabilist.py +++ b/tests/test_probabilist.py @@ -25,6 +25,11 @@ _all_metrics = ( 'CR', 'AW', 'AWN', 'AWI', 'WS', 'WSS' ) +# list all available deterministic diagnostics +_all_diags = ( + 'completeness' +) + class TestMetrics(unittest.TestCase): @@ -408,6 +413,44 @@ class TestMultiDimensional(unittest.TestCase): ) +class TestDiagnostics(unittest.TestCase): + + def test_completeness(self): + obs = numpy.array( + [[4.7, 4.3, numpy.nan, 2.7, 4.1, 5.0]] + ) + + prd = numpy.array( + [[[[5.3, numpy.nan, 5.7, 2.3, 3.3, numpy.nan], + [4.3, numpy.nan, 4.7, 4.3, 3.4, numpy.nan], + [5.3, numpy.nan, 5.7, 2.3, 3.8, numpy.nan]], + [[numpy.nan, 4.2, 5.7, 2.3, 3.1, 4.1], + [numpy.nan, 4.2, 4.7, 4.3, 3.3, 2.8], + [numpy.nan, 5.2, 5.7, 2.3, 3.9, 3.5]]]] + ) + + msk = numpy.array( + [[[[True, True, True, False, True, True], + [True, True, True, True, True, True]], + [[True, True, True, True, True, False], + [True, True, True, True, True, True]]]] + ) + + exp = numpy.array( + [[[[2.], + [3.]], + [[3.], + [4.]]]] + ) + + numpy.testing.assert_almost_equal( + exp, + evalhyd.evalp( + obs, prd, ["QS"], t_msk=msk, diagnostics=["completeness"] + )[1] + ) + + if __name__ == '__main__': test_loader = unittest.TestLoader() test_suite = unittest.TestSuite() -- GitLab