summaryrefslogtreecommitdiff
path: root/stwcs/gui/updatewcs.py
diff options
context:
space:
mode:
authorNadia Dencheva <nadia.dencheva@gmail.com>2016-08-04 17:42:01 -0400
committerNadia Dencheva <nadia.dencheva@gmail.com>2016-08-04 17:42:01 -0400
commit4b65b226085ccb9e665a5866023d8114f7438188 (patch)
tree7183ed93c0624164930069bf5fedcd582dce84b6 /stwcs/gui/updatewcs.py
parent86d1bc5a77491770d45b86e5cf18b79ded68fb9b (diff)
downloadstwcs_hcf-4b65b226085ccb9e665a5866023d8114f7438188.tar.gz
restructure and add stwcs tests
Diffstat (limited to 'stwcs/gui/updatewcs.py')
-rw-r--r--stwcs/gui/updatewcs.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/stwcs/gui/updatewcs.py b/stwcs/gui/updatewcs.py
new file mode 100644
index 0000000..3dacb67
--- /dev/null
+++ b/stwcs/gui/updatewcs.py
@@ -0,0 +1,90 @@
+from __future__ import print_function
+import os
+
+from astropy.io import fits
+from stsci.tools import parseinput
+from stsci.tools import fileutil
+from stsci.tools import teal
+import stwcs
+from stwcs import updatewcs
+from stwcs.wcsutil import convertwcs
+
+allowed_corr_dict = {'vacorr':'VACorr','tddcorr':'TDDCorr','npolcorr':'NPOLCorr','d2imcorr':'DET2IMCorr'}
+
+__taskname__ = __name__.split('.')[-1] # needed for help string
+__package__ = updatewcs.__name__
+__version__ = stwcs.__version__
+
+#
+#### Interfaces used by TEAL
+#
+def getHelpAsString(docstring=False):
+ """
+ return useful help from a file in the script directory called __taskname__.help
+ """
+ install_dir = os.path.dirname(__file__)
+ htmlfile = os.path.join(install_dir,'htmlhelp',__taskname__+'.html')
+ helpfile = os.path.join(install_dir,__taskname__+'.help')
+ if docstring or (not docstring and not os.path.exists(htmlfile)):
+ helpString = __taskname__+' Version '+__version__+'\n\n'
+ if os.path.exists(helpfile):
+ helpString += teal.getHelpFileAsString(__taskname__,__file__)
+ else:
+ helpString += eval('.'.join([__package__,__taskname__,'__doc__']))
+
+ else:
+ helpString = 'file://'+htmlfile
+
+ return helpString
+
+def run(configObj=None):
+
+ # Interpret primary parameters from configObj instance
+ extname = configObj['extname']
+ input = configObj['input']
+
+ # create dictionary of remaining parameters, deleting extraneous ones
+ # such as those above
+ cdict = configObj.dict()
+ # remove any rules defined for the TEAL interface
+ if "_RULES_" in cdict: del cdict['_RULES_']
+ del cdict['_task_name_']
+ del cdict['input']
+ del cdict['extname']
+
+ # parse input
+ input,altfiles = parseinput.parseinput(configObj['input'])
+
+ # Insure that all input files have a correctly archived
+ # set of OPUS WCS keywords
+ # Legacy files from OTFR, like all WFPC2 data from OTFR, will only
+ # have the OPUS WCS keywords archived using a prefix of 'O'
+ # These keywords need to be converted to the Paper I alternate WCS
+ # standard using a wcskey (suffix) of 'O'
+ # If an alternate WCS with wcskey='O' already exists, this will copy
+ # the values from the old prefix-'O' WCS keywords to insure the correct
+ # OPUS keyword values get archived for use with updatewcs.
+ #
+ for file in input:
+ # Check to insure that there is a valid reference file to be used
+ idctab = fits.getval(file, 'idctab')
+ if not os.path.exists(fileutil.osfn(idctab)):
+ print('No valid distortion reference file ',idctab,' found in ',file,'!')
+ raise ValueError
+
+ # Re-define 'cdict' to only have switches for steps supported by that instrument
+ # the set of supported steps are defined by the dictionary
+ # updatewcs.apply_corrections.allowed_corrections
+ #
+ for file in input:
+ # get instrument name from input file
+ instr = fits.getval(file,'INSTRUME')
+ # make copy of input parameters dict for this file
+ fdict = cdict.copy()
+ # Remove any parameter that is not part of this instrument's allowed corrections
+ for step in allowed_corr_dict:
+ if allowed_corr_dict[step] not in updatewcs.apply_corrections.allowed_corrections[instr]:
+ fdict[step]
+ # Call 'updatewcs' on correctly archived file
+ updatewcs.updatewcs(file,**fdict)
+