FITS Translation Utility
|
||||||
The following Python script illustrates how an FTT can be build up programmatically. Note that the example used here, produces a very simply FTT which maybe does not justify the usage of a dynamic FTT. It is shown here as an example.
#!/opsw/util/python/bin/python
#******************************************************************************
# ESO/DFS
#
# "@(#) $Id: PythonFttEx1.py,v 1.3 2000/11/14 07:38:41 jknudstr Exp $"
#
# Who When What
# -------- ---------- -------------------------------------------------------
# jknudstr 20/02/2001 Created
#
import os, sys
# To be able to use the 'constants' referring to Translation Actions etc.
from FtuFttDefs import *
import FtuFtt, FtuFttAction, FtuFttValueSrc
# We take a FITS to convert as input parameter.
if (len(sys.argv) != 2):
print "\n\nCorrect usage is:\n\n"
print "% PythonFttEx1 \n\n"
sys.exit(1)
# Create instance of the FTT class.
ftt = FtuFtt.FtuFtt()
# Add Remove Actions.
for hdrNo in [1, 2]:
ftt.addAction(FtuFttAction.FtuFttAction().\
setRemoveAction("XTENSION,EXTNAME,ORIGIN,"+
"DET.CHIP.XGAP,DET.CHIP.YGAP",hdrNo))
for hdrNo in [1, 2]:
ftt.addAction(FtuFttAction.FtuFttAction().\
setRemoveAction("INS.SLIT*.*", hdrNo))
# Add Change Actions.
for valSet in [["DET.CHIPS", 1,
[[ftuACTION_CHANGE, ftuVAL_SRC_CONST, "1"]], ""],
["DET.OUTPUTS", 1,
[[ftuACTION_CHANGE, ftuVAL_SRC_CONST, "1"]], ""],
["DET.WIN1.NX", 1,
[[ftuACTION_CHANGE, ftuVAL_SRC_KEY, "DET.WIN1.NX"],
[ftuACTION_CHANGE, ftuVAL_SRC_CONST, "0.5"]],
"MultiplyDouble"],
["DET.CHIPS", 2,
[[ftuACTION_CHANGE, ftuVAL_SRC_CONST, "1"]], ""],
["DET.OUTPUTS", 2,
[[ftuACTION_CHANGE, ftuVAL_SRC_CONST, "1"]], ""],
["DET.OUT.X", 2,
[[ftuACTION_CHANGE, ftuVAL_SRC_CONST, "1"]], ""],
["DET.WIN1.NX", 2,
[[ftuACTION_CHANGE, ftuVAL_SRC_KEY, "DET.WIN1.NX"],
[ftuACTION_CHANGE, ftuVAL_SRC_CONST, "0.5"]],
"MultiplyDouble"]]:
valSrcList = []
for valSrc in valSet[2]:
valSrcList.append(FtuFttValueSrc.\
FtuFttValueSrc(valSrc[0], valSrc[1], valSrc[2]))
ftt.addAction(FtuFttAction.FtuFttAction().\
setChangeAction(valSet[0], valSet[1], valSrcList, valSet[3]))
# Set File Split Action.
valSrcs = [FtuFttValueSrc.FtuFttValueSrc(ftuACTION_FILE_SPLIT,
ftuVAL_SRC_CONST, "."),
FtuFttValueSrc.FtuFttValueSrc(ftuACTION_FILE_SPLIT,
ftuVAL_SRC_KEY, "OCS.CON.QUAD")]
ftt.getFileSplitAction().setFileSplit("$FILENAME", valSrcs)
# Execute the FTT.
ftt.execute(sys.argv[1])
#
# ___oOo___
There are in principle no limitations to how the Translation Actions are build up. For instance could values be extracted from a DB, from other FITS files, calculated in Python, or by external utilities ...
The resulting FTT in the example above is an intermediate file handled internally by the FtuFtt class. It is shown here to illustrate how the statements in the program shown above, result in various Translation Statements. This is an example of a very simple FTT:
FILE.SPLIT.PREFIX "$FILENAME" FILE.SPLIT.CONCAT.CONST "." FILE.SPLIT.CONCAT.KEY "OCS.CON.QUAD" REMOVE.KEYLIST "XTENSION,EXTNAME,ORIGIN,DET.CHIP.XGAP,DET.CHIP.YGAP" REMOVE.HDR 1 REMOVE.KEYLIST "XTENSION,EXTNAME,ORIGIN,DET.CHIP.XGAP,DET.CHIP.YGAP" REMOVE.HDR 2 REMOVE.KEYLIST "INS.SLIT*.*" REMOVE.HDR 1 REMOVE.KEYLIST "INS.SLIT*.*" REMOVE.HDR 2 CHANGE.KEY "DET.CHIPS" CHANGE.HDR 1 CHANGE.VALUE.CONST "1" CHANGE.KEY "DET.OUTPUTS" CHANGE.HDR 1 CHANGE.VALUE.CONST "1" CHANGE.KEY "DET.WIN1.NX" CHANGE.HDR 1 CHANGE.VALUE.KEY "DET.WIN1.NX" CHANGE.VALUE.CONST "0.5" CHANGE.FCT "MultiplyDouble" CHANGE.KEY "DET.CHIPS" CHANGE.HDR 2 CHANGE.VALUE.CONST "1" CHANGE.KEY "DET.OUTPUTS" CHANGE.HDR 2 CHANGE.VALUE.CONST "1" CHANGE.KEY "DET.OUT.X" CHANGE.HDR 2 CHANGE.VALUE.CONST "1" CHANGE.KEY "DET.WIN1.NX" CHANGE.HDR 2 CHANGE.VALUE.KEY "DET.WIN1.NX" CHANGE.VALUE.CONST "0.5" CHANGE.FCT "MultiplyDouble" # --- oOo ---
|
Send
comments to <Jens.Knudstrup@eso.org> |
|