summaryrefslogtreecommitdiff
path: root/wcsutil
diff options
context:
space:
mode:
authordencheva <dencheva@stsci.edu>2009-09-24 15:05:32 -0400
committerdencheva <dencheva@stsci.edu>2009-09-24 15:05:32 -0400
commitf95aaac222c61f886e27f7029ed592a76b31eeed (patch)
tree99d7e6b2cef65db92f52e1e7ffe82b08cbe5ce6e /wcsutil
parent18314675643b403b5655f3e6898c49db7e16695c (diff)
downloadstwcs_hcf-f95aaac222c61f886e27f7029ed592a76b31eeed.tar.gz
Added code which allows to create an HSTWCS object without the requirement to tie it to an instrument and detector (WCS headerlets). Also better handling of iraf type fits names
git-svn-id: http://svn.stsci.edu/svn/ssb/stsci_python/stsci_python/trunk/stwcs@8308 fe389314-cf27-0410-b35b-8c050e845b92
Diffstat (limited to 'wcsutil')
-rw-r--r--wcsutil/__init__.py25
-rw-r--r--wcsutil/instruments.py62
-rw-r--r--wcsutil/mappings.py3
3 files changed, 43 insertions, 47 deletions
diff --git a/wcsutil/__init__.py b/wcsutil/__init__.py
index a275a18..a7045c2 100644
--- a/wcsutil/__init__.py
+++ b/wcsutil/__init__.py
@@ -61,7 +61,7 @@ class HSTWCS(WCS):
if not isinstance(fobj, pyfits.HDUList):
phdu.close()
-
+ self.instrument ='DEFAULT'
self.setInstrSpecKw(hdr0, ehdr)
self.setPscale()
self.setOrient()
@@ -82,20 +82,27 @@ class HSTWCS(WCS):
if ext != None:
filename = f
- extnum = ext
+ if isinstance(ext,tuple):
+ if ext[0] == '':
+ extnum = ext[1] # handle ext=('',1)
+ else:
+ extnum = ext
+ else:
+ extnum = int(ext)
elif ext == None:
- filename, extname = fileutil.parseFilename(f)
- if extname == None:
- #data may be in the primary array
- extnum = 0
+ filename, ext = fileutil.parseFilename(f)
+ ext = fileutil.parseExtn(ext)
+ if ext[0] == '':
+ extnum = int(ext[1]) #handle ext=('',extnum)
else:
- extnum = fileutil.parseExtn(extname)
+ extnum = ext
phdu = pyfits.open(filename)
hdr0 = pyfits.getheader(filename)
try:
ehdr = pyfits.getheader(filename, ext=extnum)
- except IndexError:
- print 'Unable to get extension %d. /n' % ext
+ except (IndexError,KeyError):
+ print 'Unable to get extension.', extnum
+ raise
elif isinstance(f, pyfits.HDUList):
phdu = f
diff --git a/wcsutil/instruments.py b/wcsutil/instruments.py
index 7ac18f4..ac7982f 100644
--- a/wcsutil/instruments.py
+++ b/wcsutil/instruments.py
@@ -11,6 +11,7 @@ class InstrWCS(object):
def __init__(self, hdr0=None, hdr=None):
self.exthdr = hdr
self.primhdr = hdr0
+ self.set_ins_spec_kw()
def set_ins_spec_kw(self):
"""
@@ -32,62 +33,49 @@ class InstrWCS(object):
def set_filter1(self):
- try:
- self.filter1 = self.primhdr.get('FILTER1', None)
- except:
- self.filter1 = None
+ self.filter1 = self.primhdr.get('FILTER1', None)
+
def set_filter2(self):
- try:
- self.filter2 = self.primhdr.get('FILTER2', None)
- except:
- self.filter2 = None
+ self.filter2 = self.primhdr.get('FILTER2', None)
+
def set_vafactor(self):
- try:
- self.vafactor = self.exthdr.get('vafactor', 1)
- except:
- self.vafactor = 1.
+ self.vafactor = self.exthdr.get('vafactor', 1)
+
def set_naxis1(self):
try:
- self.naxis1 = self.exthdr.get('naxis1', None)
+ self.naxis1 = self.exthdr['naxis1']
except:
- self.naxis1 = None
+ try:
+ self.naxis1 = self.exthdr['npix1']
+ except:
+ self.naxis1 = None
def set_naxis2(self):
try:
- self.naxis2 = self.exthdr.get('naxis2', None)
+ self.naxis2 = self.exthdr['naxis2']
except:
- self.naxis2 = None
+ try:
+ self.naxis2 = self.exthdr['npix2']
+ except:
+ self.naxis2 = None
def set_ltv1(self):
- try:
- self.ltv1 = self.exthdr.get('ltv1', 0.0)
- except:
- self.ltv1 = 0.0
+ self.ltv1 = self.exthdr.get('ltv1', 0.0)
def set_ltv2(self):
- try:
- self.ltv2 = self.exthdr.get('ltv2', 0.0)
- except:
- self.ltv2 = 0.0
-
+ self.ltv2 = self.exthdr.get('ltv2', 0.0)
+
def set_binned(self):
- try:
- self.binned = self.exthdr.get('BINAXIS1', 1)
- except:
- self.binned = 1
+ self.binned = self.exthdr.get('BINAXIS1', 1)
+
def set_chip(self):
- try:
- self.chip = self.exthdr.get('CCDCHIP', 1)
- except:
- self.chip = 1
-
+ self.chip = self.exthdr.get('CCDCHIP', 1)
+
def set_parity(self):
self.parity = [[1.0,0.0],[0.0,-1.0]]
def set_detector(self):
# each instrument has a different kw for detector and it can be
# in a different header, so this is to be handled by the instrument classes
- pass
-
-
+ self.detector = 'DEFAULT'
class ACSWCS(InstrWCS):
"""
diff --git a/wcsutil/mappings.py b/wcsutil/mappings.py
index 48f687f..72059a3 100644
--- a/wcsutil/mappings.py
+++ b/wcsutil/mappings.py
@@ -7,7 +7,8 @@ inst_mappings={'WFPC2': 'WFPC2WCS',
'ACS': 'ACSWCS',
'NICMOS': 'NICMOSWCS',
'STIS': 'STISWCS',
- 'WFC3': 'WFC3WCS'
+ 'WFC3': 'WFC3WCS',
+ 'DEFAULT': 'InstrWCS'
}