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
|
import os
#import pyfits
from astropy.io import fits as pyfits
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 = pyfits.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 = pyfits.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)
|