1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
from __future__ import absolute_import, division, print_function
import os
from astropy.io import fits
from stsci.tools import parseinput
from stsci.tools import fileutil
from stsci.tools import teal
from .. import __version__
from .. import updatewcs
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
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)
|