diff --git a/wetb/utils/geometry.py b/wetb/utils/geometry.py index e7dd0638b303313a1735961d3d93b5b529a91e5e..e578cad59eec5b81b7248334638b6779c03ea949 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 7a1d4a7ae04639b4a089b4c135b5a6005db3b180..1ae82832e36ab0d269a26a4aea16d03e818a2520 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)