diff options
author | Nadia Dencheva <nadia.astropy@gmail.com> | 2016-08-07 12:23:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-07 12:23:24 -0400 |
commit | a2e16e39b0eb8ac0251a6473c60fee0d437c3a5f (patch) | |
tree | 7b6771e9c1974852eb8a283507677651078ce32a /lib/stwcs/wcsutil/convertwcs.py | |
parent | 86d1bc5a77491770d45b86e5cf18b79ded68fb9b (diff) | |
parent | 2dc0676bc00f66a87737e78484876051633b731a (diff) | |
download | stwcs_hcf-a2e16e39b0eb8ac0251a6473c60fee0d437c3a5f.tar.gz |
Merge pull request #9 from nden/refactor-and-tests
restructure and add stwcs tests
Diffstat (limited to 'lib/stwcs/wcsutil/convertwcs.py')
-rw-r--r-- | lib/stwcs/wcsutil/convertwcs.py | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/lib/stwcs/wcsutil/convertwcs.py b/lib/stwcs/wcsutil/convertwcs.py deleted file mode 100644 index a384eb1..0000000 --- a/lib/stwcs/wcsutil/convertwcs.py +++ /dev/null @@ -1,118 +0,0 @@ -from __future__ import print_function -try: - import stwcs - from stwcs import wcsutil -except: - stwcs = None - -from stsci.tools import fileutil - -OPUS_WCSKEYS = ['OCRVAL1','OCRVAL2','OCRPIX1','OCRPIX2', - 'OCD1_1','OCD1_2','OCD2_1','OCD2_2', - 'OCTYPE1','OCTYPE2'] - - -def archive_prefix_OPUS_WCS(fobj,extname='SCI'): - """ Identifies WCS keywords which were generated by OPUS and archived - using a prefix of 'O' for all 'SCI' extensions in the file - - Parameters - ---------- - fobj : str or `astropy.io.fits.HDUList` - Filename or fits object of a file - - """ - if stwcs is None: - print('=====================') - print('The STWCS package is needed to convert an old-style OPUS WCS to an alternate WCS') - print('=====================') - raise ImportError - - - closefits = False - if isinstance(fobj,str): - # A filename was provided as input - fobj = fits.open(fobj,mode='update') - closefits=True - - # Define the header - ext = ('sci',1) - hdr = fobj[ext].header - - numextn = fileutil.countExtn(fobj) - extlist = [] - for e in range(1,numextn+1): - extlist.append(('sci',e)) - - # Insure that the 'O' alternate WCS is present - if 'O' not in wcsutil.wcskeys(hdr): - # if not, archive the Primary WCS as the default OPUS WCS - wcsutil.archiveWCS(fobj,extlist, wcskey='O', wcsname='OPUS') - - # find out how many SCI extensions are in the image - numextn = fileutil.countExtn(fobj,extname=extname) - if numextn == 0: - extname = 'PRIMARY' - - # create HSTWCS object from PRIMARY WCS - wcsobj = wcsutil.HSTWCS(fobj,ext=ext,wcskey='O') - # get list of WCS keywords - wcskeys = list(wcsobj.wcs2header().keys()) - - # For each SCI extension... - for e in range(1,numextn+1): - # Now, look for any WCS keywords with a prefix of 'O' - for key in wcskeys: - okey = 'O'+key[:7] - hdr = fobj[(extname,e)].header - if okey in hdr: - # Update alternate WCS keyword with prefix-O OPUS keyword value - hdr[key] = hdr[okey] - - if closefits: - fobj.close() - -def create_prefix_OPUS_WCS(fobj,extname='SCI'): - """ Creates alternate WCS with a prefix of 'O' for OPUS generated WCS values - to work with old MultiDrizzle. - - Parameters - ---------- - fobj : str or `astropy.io.fits.HDUList` - Filename or fits object of a file - - Raises - ------ - IOError: - if input FITS object was not opened in 'update' mode - - """ - # List of O-prefix keywords to create - owcskeys = OPUS_WCSKEYS - - closefits = False - if isinstance(fobj,str): - # A filename was provided as input - fobj = fits.open(fobj, mode='update') - closefits=True - else: - # check to make sure this FITS obj has been opened in update mode - if fobj.fileinfo(0)['filemode'] != 'update': - print('File not opened with "mode=update". Quitting...') - raise IOError - - # check for existance of O-prefix WCS - if owcskeys[0] not in fobj['sci',1].header: - - # find out how many SCI extensions are in the image - numextn = fileutil.countExtn(fobj,extname=extname) - if numextn == 0: - extname = '' - for extn in range(1,numextn+1): - hdr = fobj[(extname,extn)].header - for okey in owcskeys: - hdr[okey] = hdr[okey[1:]+'O'] - - # Close FITS image if we had to open it... - if closefits: - fobj.close() |