Skip to content

Commit f9ff9cb

Browse files
committed
dev
1 parent c8bd171 commit f9ff9cb

4 files changed

Lines changed: 34 additions & 32 deletions

File tree

cf/data/dask_utils.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,7 @@ def cf_healpix_increase_refinement_indices(a, refinement_level, ncells):
917917

918918

919919
def cf_healpix_indexing_scheme(
920-
a, indexing_scheme, new_indexing_scheme, refinement_level=None
920+
a, indexing_scheme, new_indexing_scheme, refinement_level
921921
):
922922
"""Change the indexing scheme of HEALPix indices.
923923
@@ -954,7 +954,7 @@ def cf_healpix_indexing_scheme(
954954
cells. Must be an `int` for *indexing_scheme* ``'nested'``
955955
or ``'ring'``, but is ignored for *indexing_scheme*
956956
``'nested_unique'`` (in which case *refinement_level* may
957-
be `None`).
957+
be `None`). TODOHEALPIX
958958
959959
:Returns:
960960
@@ -1020,22 +1020,19 @@ def cf_healpix_indexing_scheme(
10201020
if refinement_levels.size > 1:
10211021
raise ValueError(
10221022
"Can't change HEALPix indexing scheme from "
1023-
f"'nested_unique' to {new_indexing_scheme!r} "
1024-
"when the HEALPix indices span multiple "
1025-
"refinement levels (at least levels "
1026-
f"{refinement_levels.tolist()})"
1023+
f"{indexing_scheme!r} to {new_indexing_scheme!r}: "
1024+
"HEALPix indices span multiple refinement levels "
1025+
f"(at least levels {refinement_levels.tolist()})"
10271026
)
10281027

10291028
return a
10301029

1031-
case _:
1032-
raise ValueError(
1033-
"Can't calculate HEALPix cell coordinates: Unknown "
1034-
f"'indexing_scheme': {indexing_scheme!r}"
1035-
)
1036-
1030+
# Still here?
10371031
raise RuntimeError(
1038-
"cf_healpix_indexing_scheme: Failed during Dask computation"
1032+
"cf_healpix_indexing_scheme: Failed during Dask computation: "
1033+
f"indexing_scheme={indexing_scheme!r}, "
1034+
f"new_indexing_scheme={new_indexing_schemer!r}, "
1035+
f"refinement_level={refinement_level!r}"
10391036
)
10401037

10411038

cf/field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5360,8 +5360,8 @@ def healpix_increase_refinement_level(self, refinement_level, quantity):
53605360
healpix_max_refinement_level,
53615361
)
53625362

5363-
# Increasing the refinement level requires the nested indexing
5364-
# scheme
5363+
# Increasing the refinement level requires the "nested"
5364+
# indexing scheme
53655365
try:
53665366
f = self.healpix_indexing_scheme("nested", sort=False)
53675367
except ValueError as e:

cf/healpix.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,9 @@ def _healpix_increase_refinement_level_indices(
305305
data._set_cached_elements({-1: x})
306306

307307

308-
def _healpix_indexing_scheme(healpix_index, hp, new_indexing_scheme):
308+
def _healpix_indexing_scheme(
309+
healpix_index, indexing_scheme, new_indexing_scheme, refinement_level
310+
):
309311
"""Change the indexing scheme of HEALPix indices in-place.
310312
311313
K. Gorski, Eric Hivon, A. Banday, B. Wandelt, M. Bartelmann, et
@@ -341,9 +343,6 @@ def _healpix_indexing_scheme(healpix_index, hp, new_indexing_scheme):
341343
"""
342344
from .data.dask_utils import cf_healpix_indexing_scheme
343345

344-
indexing_scheme = hp["indexing_scheme"]
345-
refinement_level = hp.get("refinement_level")
346-
347346
# Change the HEALPix indices
348347
dx = healpix_index.data.to_dask_array(
349348
_force_mask_hardness=False, _force_to_memory=False

cf/mixin/fielddomain.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2095,34 +2095,40 @@ def healpix_indexing_scheme(self, new_indexing_scheme, sort=False):
20952095
and new_indexing_scheme != indexing_scheme
20962096
):
20972097
refinement_level = hp.get("refinement_level")
2098-
if (
2099-
indexing_scheme in ("nested", "ring")
2100-
and refinement_level is None
2101-
):
2098+
if refinement_level is None:
21022099
raise ValueError(
21032100
f"Can't change HEALPix indexing scheme of {f!r} from "
2104-
f"{indexing_scheme!r} to {new_indexing_scheme!r} when "
2101+
f"{indexing_scheme!r} to {new_indexing_scheme!r}: "
21052102
"refinement_level has not been set in the healpix grid "
21062103
"mapping coordinate reference"
21072104
)
21082105

2106+
if (
2107+
new_indexing_scheme in ("nested", "ring")
2108+
and np.array(refinement_level).size > 1
2109+
):
2110+
raise ValueError(
2111+
f"Can't change HEALPix indexing scheme of {f!r} from "
2112+
f"{indexing_scheme!r} to {new_indexing_scheme!r}: "
2113+
"Multiple refinement levels are set in the healpix grid "
2114+
f"mapping coordinate reference: {refinement_level!r}"
2115+
)
2116+
21092117
# Update the Coordinate Reference
21102118
cr = hp["grid_mapping_name:healpix"]
21112119
cr.coordinate_conversion.set_parameter(
21122120
"indexing_scheme", new_indexing_scheme
21132121
)
2114-
if new_indexing_scheme == "nested_unique":
2115-
cr.coordinate_conversion.del_parameter("refinement_level")
2116-
elif indexing_scheme == "nested_unique":
2117-
raise ValueError(
2118-
f"Can't change HEALPix indexing scheme of {f!r} from "
2119-
f"{indexing_scheme!r} to {new_indexing_scheme!r}"
2120-
)
21212122

21222123
# Change the HEALPix indices
21232124
from ..healpix import _healpix_indexing_scheme
21242125

2125-
_healpix_indexing_scheme(healpix_index, hp, new_indexing_scheme)
2126+
_healpix_indexing_scheme(
2127+
healpix_index,
2128+
indexing_scheme,
2129+
new_indexing_scheme,
2130+
refinement_level,
2131+
)
21262132

21272133
if sort:
21282134
# Sort the HEALPix axis so that the HEALPix indices are

0 commit comments

Comments
 (0)