Source code for check_cutout

#!/usr/bin/env python3
from __future__ import annotations

import os
from glob import glob

import astropy.units as u
import matplotlib.pyplot as plt
from astropy.table import Table
from astropy.visualization import ImageNormalize, MinMaxInterval, SqrtStretch
from matplotlib.patches import Ellipse
from spectral_cube import SpectralCube


[docs] def plot_comp(row, c="b"): ax = plt.gca() ax.plot( row["RA"], row["Dec"], marker="X", color=c, transform=ax.get_transform("world") ) e = Ellipse( ((row["RA"] * u.deg).value, (row["Dec"] * u.deg).value), width=(row["Maj"] * u.arcsec).to(u.deg).value, height=(row["Min"] * u.arcsec).to(u.deg).value, angle=row["PA"] + 90, transform=ax.get_transform("world"), facecolor="none", edgecolor=c, linewidth=2, ) ax.add_artist(e) ax.text( (row["RA"] * u.deg).value, (row["Dec"] * u.deg).value, row["Peak_flux"], transform=ax.get_transform("world"), )
[docs] def main(cutdir, source): cat = Table.read( "/home/athomson/athomson/projects/RACS/Catalogues/RACS-25asec-Mosaiced_Gaussians_Final_GalCut_v2020_11_15.fits" ) cat_S = Table.read( "/home/athomson/athomson/projects/RACS/Catalogues/RACS-25asec-Mosaiced_Sources_Final_GalCut_v2020_11_15.fits" ) cat.add_index("Source_ID") cat_S.add_index("Source_ID") sub = Table(cat.loc[source]) cat_S.add_index("Source_ID") sub_S = Table(cat_S.loc[source]) cutdir = os.path.abspath(cutdir) images = glob(f"{cutdir}/{source}/*.image.*.i.*.linmos.fits") cube = SpectralCube.read(images[0]) mom0 = cube.mean(axis=0) fig = plt.figure() ax = plt.subplot(projection=mom0.wcs) norm = ImageNormalize(mom0.value, interval=MinMaxInterval(), stretch=SqrtStretch()) im = ax.imshow(mom0.value, norm=norm) ax.plot( sub["RA"] * u.deg, sub["Dec"] * u.deg, "rX", transform=ax.get_transform("world") ) ax.plot( sub_S["RA"] * u.deg, sub_S["Dec"] * u.deg, "bX", transform=ax.get_transform("world"), ) ra = ax.coords["ra"] dec = ax.coords["dec"] ra.set_major_formatter("d.dd") dec.set_major_formatter("d.dd") fig.colorbar(im, label=f"Average flux density [{mom0.unit}]") for row in sub: plot_comp(row, c="w") plt.show()
# plt.savefig('test.png')
[docs] def cli(): import argparse descStr = """ Check cutouts """ parser = argparse.ArgumentParser( description=descStr, formatter_class=argparse.ArgumentDefaultsHelpFormatter ) parser.add_argument("cutdir", metavar="cutdir", type=str, help="Cutout dir") parser.add_argument("source", metavar="source", type=str, help="Source name.") args = parser.parse_args() main(args.cutdir, args.source)
if __name__ == "__main__": cli()