From ce2d40e6c22dcbd7854248d02f775b5d4878e9f1 Mon Sep 17 00:00:00 2001
From: "Mads M. Pedersen" <mmpe@dtu.dk>
Date: Mon, 5 Sep 2016 10:54:05 +0200
Subject: [PATCH] nan support in std_deg

---
 wetb/utils/geometry.py            | 2 +-
 wetb/utils/tests/test_geometry.py | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/wetb/utils/geometry.py b/wetb/utils/geometry.py
index e7dd0638..e578cad5 100644
--- a/wetb/utils/geometry.py
+++ b/wetb/utils/geometry.py
@@ -50,7 +50,7 @@ def std_deg(dir):
     std_deg : float
         standard deviation
     """
-    return deg(np.sqrt(1 - (np.mean(sind(dir)) ** 2 + np.mean(cosd(dir)) ** 2)))
+    return deg(np.sqrt(1 - (np.nanmean(sind(dir)) ** 2 + np.nanmean(cosd(dir)) ** 2)))
 
 
 def wsp_dir2uv(wsp, dir, dir_ref=None):
diff --git a/wetb/utils/tests/test_geometry.py b/wetb/utils/tests/test_geometry.py
index 7a1d4a7a..1ae82832 100644
--- a/wetb/utils/tests/test_geometry.py
+++ b/wetb/utils/tests/test_geometry.py
@@ -65,6 +65,9 @@ class TestGeometry(unittest.TestCase):
         self.assertEqual(std_deg(np.array([0, 0, 0])), 0)
         self.assertAlmostEqual(std_deg(np.array([0, 90, 180, 270])), 57.296, 2)
 
+    def test_std_deg_nan(self):
+        self.assertAlmostEqual(std_deg(np.array([0, 90, 180, 270, np.nan])), 57.296, 2)
+
     def test_wspdir2uv(self):
         u, v = wsp_dir2uv(np.array([1, 1, 1]), np.array([30, 0, 330]))
         np.testing.assert_array_almost_equal(u, [0.8660, 1, 0.8660], 3)
-- 
GitLab