Skip to content

Commit f8a9312

Browse files
Merge pull request #62 from CosmoStat/hp
cat.py: read hp mask
2 parents b247952 + 27f8081 commit f8a9312

1 file changed

Lines changed: 30 additions & 71 deletions

File tree

cs_util/cat.py

Lines changed: 30 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import os
1212
from datetime import datetime
13+
1314
from importlib.metadata import version
1415
import numpy as np
1516
import healpy as hp
@@ -288,100 +289,58 @@ def read_dndz(file_path):
288289
return z_centers, nz, z_edges
289290

290291

291-
def read_hp_mask(input_name, verbose=False):
292+
def read_hp_mask(input_path, verbose=False):
292293
"""Read Hp Mask.
293294
294-
Read healpy mask.
295+
Read healpix mask FITS file.
295296
296-
Parameters
297-
----------
298-
input_name : str
299-
input file name
300-
verbose : bool, optional
301-
verbose output if ``True``;; default is ``False``
297+
Parameters
298+
----------
299+
input_path : str
300+
input file path
301+
verbose : bool, optional
302+
verbose output if ``True``; default is ``False``
302303
303-
Returns
304-
-------
305-
array
306-
mask values
307-
bool
308-
nest value (always ``False``)
309-
int
310-
nside
304+
Returns
305+
-------
306+
array
307+
mask information
308+
bool
309+
NEST (RING) ordering if ``True`` (``False``)
310+
int
311+
nside
311312
312313
"""
313314
if verbose:
314-
print(f'Reading mask {input_name}...')
315+
print(f"Reading mask {input_path}...")
315316

316317
nest = False
317318

318-
# Open input mask
319-
mask, header= hp.read_map(
320-
input_name,
319+
# Open input mask
320+
mask, header = hp.read_map(
321+
input_path,
321322
h=True,
322323
nest=nest,
323324
)
324-
for (key, value) in header:
325-
if key == 'ORDERING':
326-
if value == 'RING':
325+
for key, value in header:
326+
if key == "ORDERING":
327+
if value == "RING":
327328
if nest:
328329
raise ValueError(
329-
'input mask has ORDENING=RING, set nest to False'
330+
"input mask has ORDENING=RING, set nest to False"
330331
)
331-
elif value == 'NEST':
332+
elif value == "NEST":
332333
if not nest:
333334
raise ValueError(
334-
'input mask has ORDENING=NEST, set nest to True'
335+
"input mask has ORDENING=NEST, set nest to True"
335336
)
336337

337-
# Get nside from header
338+
# Get nside from header
338339
nside = None
339340
for key, value in header:
340-
if key == 'NSIDE':
341+
if key == "NSIDE":
341342
nside = int(value)
342343
if not nside:
343-
raise KeyError('NSIDE not found in FITS mask header')
344+
raise KeyError("NSIDE not found in FITS mask header")
344345

345346
return mask, nest, nside
346-
347-
348-
def get_binned_area(ra, dec, nside=512, return_pix=False):
349-
"""Get Binned Area.
350-
351-
Return sky area corresponding to occupied pixels of binned catalogue.
352-
353-
Parameters
354-
----------
355-
ra : np.ndarray
356-
Right Ascension coordinates
357-
dec : np.ndarray
358-
Declination coordinates
359-
nside : int, optional
360-
nside for binning; default is 512
361-
return_pix: bool, optional
362-
return valid pixel list if ``True``; default is ``False``
363-
364-
Returns
365-
-------
366-
float
367-
area in square degrees
368-
list
369-
pixels of input data positions
370-
371-
"""
372-
# Pixel list of input data
373-
pix = hp.ang2pix(nside, ra, dec, lonlat=True)
374-
375-
# Number of occupied pixels
376-
Nocc = np.unique(pix).size
377-
378-
# Pixel area in square degrees
379-
pix_area_deg2 = hp.nside2pixarea(nside, degrees=True)
380-
381-
# Footprint area in square degrees
382-
area_deg2 = Nocc * pix_area_deg2
383-
384-
if return_pix:
385-
return area_deg2, pix
386-
else:
387-
return area_deg2

0 commit comments

Comments
 (0)