Files
FOC_Reduction/package/src/get_cdelt.py

50 lines
1.6 KiB
Python
Executable File

#!/usr/bin/python
def main(infiles=None):
"""
Retrieve native spatial resolution from given observation.
"""
from os.path import join as path_join
from warnings import catch_warnings, filterwarnings
from astropy.io.fits import getheader
from astropy.wcs import WCS, FITSFixedWarning
from numpy.linalg import eig
if infiles is None:
print('Usage: "python get_cdelt.py -f infiles"')
return 1
prod = [["/".join(filepath.split("/")[:-1]), filepath.split("/")[-1]] for filepath in infiles]
data_folder = prod[0][0]
infiles = [p[1] for p in prod]
cdelt = {}
size = {}
for currfile in infiles:
with catch_warnings():
filterwarnings("ignore", message="'datfix' made the change", category=FITSFixedWarning)
wcs = WCS(getheader(path_join(data_folder, currfile))).celestial
key = currfile[:-5]
size[key] = wcs.array_shape
if wcs.wcs.has_cd():
cdelt[key] = eig(wcs.wcs.cd)[0] * 3600.0
else:
cdelt[key] = wcs.wcs.cdelt * 3600.0
print("Image name, native resolution in arcsec and shape")
for currfile in infiles:
key = currfile[:-5]
print(key, cdelt[key], size[key])
return 0
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Query MAST for target products")
parser.add_argument("-f", "--files", metavar="path", required=False, nargs="*", help="the full or relative path to the data products", default=None)
args = parser.parse_args()
exitcode = main(infiles=args.files)