Skip to content

Commit 99553c8

Browse files
committed
Bugfix to returned interval in positions
1 parent eb838cd commit 99553c8

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/ocelot/calculate/generic.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ def _weighted_standard_deviation(x: ArrayLike, weights: Optional[ArrayLike] = No
1616

1717

1818
def standard_error(
19-
standard_deviation: Union[ArrayLike[Union[float, int]], float, int],
20-
number_of_measurements: Union[ArrayLike[int], int],
19+
standard_deviation: Union[ArrayLike, float, int],
20+
number_of_measurements: Union[ArrayLike, int],
2121
) -> float:
2222
"""Calculates the standard error on the mean of some parameter given the standard
2323
deviation.
@@ -64,7 +64,7 @@ def mean_and_deviation(
6464
)
6565

6666

67-
def lonlat_to_unitvec(longitudes: NDArray, latitudes: NDArray):
67+
def lonlat_to_unitvec(longitudes: ArrayLike, latitudes: ArrayLike):
6868
"""Converts longitudes and latitudes to unit vectors on a unit sphere. Uses method
6969
at https://en.wikipedia.org/wiki/Spherical_coordinate_system#Cartesian_coordinates.
7070
Assumes that latitudes is in the range [-pi / 2, pi / 2] as is common in
@@ -76,7 +76,7 @@ def lonlat_to_unitvec(longitudes: NDArray, latitudes: NDArray):
7676
return np.column_stack((x, y, z))
7777

7878

79-
def unitvec_to_lonlat(unit_vectors: NDArray):
79+
def unitvec_to_lonlat(unit_vectors: ArrayLike):
8080
"""Converts unit vectors on a unit sphere to longitudes and latitudes. See
8181
`lonlat_to_unitvec` for more details.
8282
"""

src/ocelot/calculate/position.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ def mean_position(
4949
if degrees:
5050
longitudes, latitudes = np.radians(longitudes), np.radians(latitudes)
5151
mean_lon, mean_lat = spherical_mean(longitudes, latitudes)
52+
53+
# Convert back to correct interval
54+
mean_lon = np.where(mean_lon < 0, mean_lon + 2 * np.pi, mean_lon)
55+
5256
if degrees:
5357
return np.degrees(mean_lon), np.degrees(mean_lat)
5458
return mean_lon, mean_lat

0 commit comments

Comments
 (0)