[ ESO ]

FITS Translation Utility
ESO DFS Software

HOME

SEARCH

HELP


Python FTT Script

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 ...

 

Resulting FTT

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>
Last update: February 02, 2001

 [ESO]  [Search]  [Help]