diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/stwcs/wcsutil/headerlet.py | 59 | 
1 files changed, 37 insertions, 22 deletions
| diff --git a/lib/stwcs/wcsutil/headerlet.py b/lib/stwcs/wcsutil/headerlet.py index 34fb6d0..325393a 100644 --- a/lib/stwcs/wcsutil/headerlet.py +++ b/lib/stwcs/wcsutil/headerlet.py @@ -870,14 +870,38 @@ def create_headerlet(filename, sciext='SCI', hdrname=None, destim=None, wcskey="              'D2IMFILE': True}      fobj,fname,close_file = parseFilename(filename) +    # Define extension to evaluate for verification of input parameters +    wcsext = 1 +    if fu.isFits(fname)[1] == 'simple': +        wcsext = 0      # Translate 'wcskey' value for PRIMARY WCS to valid altwcs value of ' '      if wcskey == 'PRIMARY': wcskey = ' ' +    wcsnamekw = "".join(["WCSNAME",wcskey.upper()]).rstrip() -    # get all required keywords +    if not wcsname: +        # User did not specify a value for 'wcsname' +        if wcsnamekw in fobj[wcsext].header: +            wcsname = fobj[wcsext].header[wcsnamekw] +        else: +            message = "WCS in header Missing required keyword '%s'."%(wcsnamekw) +            module_logger.critical(message) +            raise KeyError,message +    else: +        # Verify that 'wcsname' and 'wcskey' values specified by user reference +        # the same WCS +        wname = fobj[wcsext].header[wcsnamekw] +        if wcsname != wname: +            message = "Inconsistent values for 'wcskey' and 'wcsname' specified!\n" +            message += "    'wcskey' = %s and 'wcsname' = %s. \n"%(wcskey,wcsname) +            message += "Actual value of %s found to be %s. \n"%(wcsnamekw,wname) +            print message +            raise KeyError,"Inconsistent values for 'wcskey' and 'wcsname' parameters" + +    # get remaining required keywords      if destim is None: -        try: +        if 'ROOTNAME' in fobj[0].header:              destim = fobj[0].header['ROOTNAME'] -        except KeyError: +        else:              destim = fname              module_logger.info('DESTIM not provided')              module_logger.info('Keyword "ROOTNAME" not found') @@ -885,28 +909,19 @@ def create_headerlet(filename, sciext='SCI', hdrname=None, destim=None, wcskey="      if not hdrname:          # check if HDRNAME<wcskey> is in header -        hdrname = "".join(["HDRNAME",wcskey.upper()]) -        try: -            hdrname = fobj[1].header['HDRNAME'] -        except KeyError: -            try: -                wname = ('WCSNAME'+wcskey).rstrip() -                hdrname = fobj[1].header['WCSNAME'+wcskey] +        hdrnamekw = "".join(["HDRNAME",wcskey.upper()]).rstrip() +        if hdrnamekw in fobj[wcsext].header: +            hdrname = fobj[wcsext].header[hdrnamekw] +        else: +            if wcsnamekw in fobj[wcsext].header: +                hdrname = fobj[wcsext].header[wcsnamekw]                  print 'Using default value for HDRNAME of "%s"'%(hdrname), -                print ' derived from %s.'%(wname) -            except KeyError, detail: -                message = "Required keywords 'HDRNAME' or 'WCSNAME' not found" -                module_logger.critical(message) -                print message, detail -     -    if not wcsname: -        wname = "".join(["WCSNAME",wcskey.upper()]) -        if wname in fobj[1].header: -            wcsname = fobj[1].header[wname] +                print ' derived from %s.'%(wcsnamekw)          else: -            message = "Missing required keyword 'WCSNAME'." +                message = "Required keywords 'HDRNAME' or 'WCSNAME' not found"              module_logger.critical(message) -            print message, detail +                print message +                raise KeyError,message      if not sipname:          sipname = utils.build_sipname(fobj) | 
