Skip to content

Commit

Permalink
Bugfix to returned interval in positions
Browse files Browse the repository at this point in the history
  • Loading branch information
emilyhunt committed Jul 22, 2024
1 parent eb838cd commit 99553c8
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/ocelot/calculate/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ def _weighted_standard_deviation(x: ArrayLike, weights: Optional[ArrayLike] = No


def standard_error(
standard_deviation: Union[ArrayLike[Union[float, int]], float, int],
number_of_measurements: Union[ArrayLike[int], int],
standard_deviation: Union[ArrayLike, float, int],
number_of_measurements: Union[ArrayLike, int],
) -> float:
"""Calculates the standard error on the mean of some parameter given the standard
deviation.
Expand Down Expand Up @@ -64,7 +64,7 @@ def mean_and_deviation(
)


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


def unitvec_to_lonlat(unit_vectors: NDArray):
def unitvec_to_lonlat(unit_vectors: ArrayLike):
"""Converts unit vectors on a unit sphere to longitudes and latitudes. See
`lonlat_to_unitvec` for more details.
"""
Expand Down
4 changes: 4 additions & 0 deletions src/ocelot/calculate/position.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ def mean_position(
if degrees:
longitudes, latitudes = np.radians(longitudes), np.radians(latitudes)
mean_lon, mean_lat = spherical_mean(longitudes, latitudes)

# Convert back to correct interval
mean_lon = np.where(mean_lon < 0, mean_lon + 2 * np.pi, mean_lon)

if degrees:
return np.degrees(mean_lon), np.degrees(mean_lat)
return mean_lon, mean_lat
Expand Down

0 comments on commit 99553c8

Please sign in to comment.