Skip to content

Commit 8e98be1

Browse files
cat.py: read hp mask
1 parent 4a3619b commit 8e98be1

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

cs_util/cat.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010

1111
import os
1212
from datetime import datetime
13+
14+
import healpy as hp
15+
1316
from astropy.io import fits
1417
from astropy.io import ascii
1518
from astropy.table import Table
@@ -217,3 +220,60 @@ def read_dndz(file_path):
217220
z_centers = bin_edges2centers(z_edges)
218221

219222
return z_centers, nz, z_edges
223+
224+
225+
def read_hp_mask(input_path, verbose=False):
226+
"""Read Hp Mask.
227+
228+
Read healpix mask FITS file.
229+
230+
Parameters
231+
----------
232+
input_path : str
233+
input file path
234+
verbose : bool, optional
235+
verbose output if ``True``; default is ``False``
236+
237+
Returns
238+
-------
239+
array
240+
mask information
241+
bool
242+
NEST (RING) ordering if ``True`` (``False``)
243+
int
244+
nside
245+
246+
"""
247+
if verbose:
248+
print(f"Reading mask {input_path}...")
249+
250+
nest = False
251+
252+
# Open input mask
253+
mask, header = hp.read_map(
254+
input_path,
255+
h=True,
256+
nest=nest,
257+
)
258+
for key, value in header:
259+
if key == "ORDERING":
260+
if value == "RING":
261+
if nest:
262+
raise ValueError(
263+
"input mask has ORDENING=RING, set nest to False"
264+
)
265+
elif value == "NEST":
266+
if not nest:
267+
raise ValueError(
268+
"input mask has ORDENING=NEST, set nest to True"
269+
)
270+
271+
# Get nside from header
272+
nside = None
273+
for key, value in header:
274+
if key == "NSIDE":
275+
nside = int(value)
276+
if not nside:
277+
raise KeyError("NSIDE not found in FITS mask header")
278+
279+
return mask, nest, nside

0 commit comments

Comments
 (0)