#!/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. else: cdelt[key] = wcs.wcs.cdelt*3600. 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)