Source code for rgbmaker.tgss_spidx
from astropy.io import fits
import numpy as np
[docs]def find_spidx(spidx_file,c, r):
"""
.. code-block:: python
>>> file_path = 'spidxcat_v1.1b.fits'
>>> c = coordinates.SkyCoord.from_name('3C 33.1', frame='fk5')
>>> find_spidx(file_path, c)
>>> [212.52272467 212.43975207 212.47209909 212.46530053 212.39858977
212.40165324],[-3.11523434 -3.03256748 -3.07505213 -3.0517433 -2.9848956 -2.96384673],
[-0.842 -0.488 -0.872 -0.308 -0.615 -0.471]
*Parameters*
:spidx_file:
spidx fits file (approx 111 MB) with Fitsrec type table in hdul[1]
:c:
Astropy SkyCoord type RA, DEC
(astropy unit - degrees)
:radius (r):
Astropy unit in degree for the sky angular size.
*Returns*
:xi, yi, spidx:
RA(unitless), DEC(unitless) and corrosponding Spectral Index values that can be plotted on plot using wcs.world_to_pixel()
"""
# -------
spidx_hdul = fits.open(spidx_file)
RA, DEC, Spidx = spidx_hdul[0].data
# -------
ra, dec =c.ra.deg, c.dec.deg
epsilon = r.value # expected r in astropy unit degree
print(f'spidx search is roughly within {np.round((epsilon*60),3)} arcmin')
i_spidx = np.where( np.abs(DEC-dec) < epsilon )
true_spidx = np.where( np.abs(RA[i_spidx]-ra) < epsilon )
xi,yi,spidx = RA[i_spidx][true_spidx], DEC[i_spidx][true_spidx], np.round(np.double(Spidx[i_spidx][true_spidx]),3)
if (not hasattr(spidx, '__len__')) and (not isinstance(spidx, str)) :
spidx = [spidx]
if (not hasattr(xi, '__len__')) and (not isinstance(xi, str)) :
xi = [xi]
if (not hasattr(yi, '__len__')) and (not isinstance(yi, str)) :
yi = [yi]
return xi, yi, spidx