Source code for kcwidrp.scripts.kcwi_masksky_ds9

from astropy.io import fits as pf
import pyregion

import numpy as np
import sys
import os


[docs]def main(): """Creates mask image from ds9 region file. To use this routine, process your data with default sky subtraction. Then display the target \*_intf.fits file in ds9. Use region shapes to indicate non-sky pixels in image (box, circle, etc.). Write out ds9 region file (\*.reg). Then run this routine: * ``python ~/kderp/devel/kcwi_masksky_ds9.py kb180101_00111_intf.fits ds9.reg`` (replace paths/filenames with your local paths/filenames) This should create kb180101_00111_smsk.fits, which will be used when you re-run the pipeline. Args: imagename (string): The name of a \*_intf.fits image regionname (string): The name of a ds9 region file Returns: None """ # check args narg = len(sys.argv) # should be three (including routine name) if narg != 3: print("Usage: kcwi_masksky_ds9 <imagename> <regionname>") print("imagename : used for array dimensions and filename purposes, ") print(" must be an _intf image.") print("regionname: name of region file containing ds9 mask regions") print(" (typically a .reg)") exit() # read arg values imfname = sys.argv[1] regfname = sys.argv[2] # make sure it's an _intf image if '_intf.fits' not in imfname: print("imagename must be _intf.fits image") exit() # do inputs exist? if not os.path.exists(imfname): print("Image file does not exist: "+imfname) exit() if not os.path.exists(regfname): print("Region file does not exist: "+regfname) exit() # create output mask image name outfile = imfname.replace("_intf", "_smsk") print("Creating: "+outfile) # load the header from the pointed-to image. hdu_list = pf.open(imfname) header = hdu_list[0].header # load in the region file r = pyregion.open(regfname).as_imagecoord(header) m = pyregion.get_mask(r, hdu_list[0]) # write out the mask hdu = pf.PrimaryHDU(np.uint8(m)) hdu.writeto(outfile, overwrite=True) print("Done.")
if __name__ == "__main__": main()