summaryrefslogtreecommitdiff
path: root/lib/stwcs/wcsutil/convertwcs.py
diff options
context:
space:
mode:
authorNadia Dencheva <nadia.astropy@gmail.com>2016-08-07 12:23:24 -0400
committerGitHub <noreply@github.com>2016-08-07 12:23:24 -0400
commita2e16e39b0eb8ac0251a6473c60fee0d437c3a5f (patch)
tree7b6771e9c1974852eb8a283507677651078ce32a /lib/stwcs/wcsutil/convertwcs.py
parent86d1bc5a77491770d45b86e5cf18b79ded68fb9b (diff)
parent2dc0676bc00f66a87737e78484876051633b731a (diff)
downloadstwcs_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.py118
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()