summaryrefslogtreecommitdiff
path: root/stwcs/wcsutil/getinput.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 /stwcs/wcsutil/getinput.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 'stwcs/wcsutil/getinput.py')
-rw-r--r--stwcs/wcsutil/getinput.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/stwcs/wcsutil/getinput.py b/stwcs/wcsutil/getinput.py
new file mode 100644
index 0000000..8ee1123
--- /dev/null
+++ b/stwcs/wcsutil/getinput.py
@@ -0,0 +1,62 @@
+from astropy.io import fits
+from stsci.tools import irafglob, fileutil, parseinput
+
+def parseSingleInput(f=None, ext=None):
+ if isinstance(f, str):
+ # create an HSTWCS object from a filename
+ if ext != None:
+ filename = f
+ if isinstance(ext,tuple):
+ if ext[0] == '':
+ extnum = ext[1] # handle ext=('',1)
+ else:
+ extnum = ext
+ else:
+ extnum = int(ext)
+ elif ext == None:
+ filename, ext = fileutil.parseFilename(f)
+ ext = fileutil.parseExtn(ext)
+ if ext[0] == '':
+ extnum = int(ext[1]) #handle ext=('',extnum)
+ else:
+ extnum = ext
+ phdu = fits.open(filename)
+ hdr0 = phdu[0].header
+ try:
+ ehdr = phdu[extnum].header
+ except (IndexError, KeyError) as e:
+ raise e.__class__('Unable to get extension %s.' % extnum)
+
+ elif isinstance(f, fits.HDUList):
+ phdu = f
+ if ext == None:
+ extnum = 0
+ else:
+ extnum = ext
+ ehdr = f[extnum].header
+ hdr0 = f[0].header
+ filename = hdr0.get('FILENAME', "")
+
+ else:
+ raise ValueError('Input must be a file name string or a'
+ '`astropy.io.fits.HDUList` object')
+
+ return filename, hdr0, ehdr, phdu
+
+
+def parseMultipleInput(input):
+ if isinstance(input, str):
+ if input[0] == '@':
+ # input is an @ file
+ filelist = irafglob.irafglob(input)
+ else:
+ try:
+ filelist, output = parseinput.parseinput(input)
+ except IOError: raise
+ elif isinstance(input, list):
+ if isinstance(input[0], wcsutil.HSTWCS):
+ # a list of HSTWCS objects
+ return input
+ else:
+ filelist = input[:]
+ return filelist