11. Restrictions for CPL recipes¶
Not every information can be retrieved from recipes with the standard CPL functions. Only MUSE recipes provide additional interfaces that allow the definition of input, calibration and output frames.
All other interfaces will have the following restrictions:
- The
Recipe.calib
attribute is not filled with templates for calibration frames. After recipe creation, this attribute is empty. Also, no check on the required calibration frames may be done before calling the recipe. Anything that is set here will be forwarded to the recipe. - In the
cpl.esorex
support, directly assigning the recipe calibration files from the SOF file withrecipe.calib = cpl.esorex.read_sof('file')
will also put the raw input file intoRecipe.calib
unlessRecipe.tags
and/orRecipe.tag
are set manually. The standard recipe interface does not provide a way to distinguish between raw input and calibration files. - The
Recipe.tags
attribute is set toNone
. - The
Recipe.tag
attribute is not initially set. If this attribute is not set manually, the tag is required when executing the attribute. - Accessing the attribute
Recipe.output()
raises an exception.
11.1. Technical Background¶
CPL recipes register all their parameter definitions with the CPL function
cpl_parameterlist_append()
. All registered parameters may be retrieved
from the recipe structure as a structure which contains all defined
parameters.
For frames, such a mechanism does not exist, although components of the
infrastructure are implemented. The CPL modules cpl_recipeconfig
allows
the definition of input, raw, and output frames for a recipe. However, this
module is only half-way done, has no connection to the recipe definition and
is not mandantory for CPL recipes. The MUSE pipeline recipes (with the
exception of those contributed by ESO) implement a central frameconfig
registry which allows to access this meta information from the Python
interface.