Recipes in orac-dr consist of a series of data reduction steps (primitives) containing instructions for the reduction of data. In general, recipes are different for each instrument supported and are keyed to the specific observing mode used to take the data.
An example recipe may look something like:
This recipe illustrates all the important features of a recipe:
oracman
command and for the automated
documentation system. At the very least, recipe documentation should include NAME
and DESCRIPTION fields. The NAME field should use the standard Perl format
of
so that the POD translators can correctly determine this information when generating LATEX and HTML code.
KEYWORD=value
syntax. The
recipe parser automatically converts these values into arguments suitable for the
primitives.
_DELETE_TEMP_FILES_
primitive. It must make sure that files required for subsequent group
processing are not deleted.
Here is a more concrete example, the UFTI QUADRANT_JITTER
recipe (without the pod sections and
only minimal comments):
The names of recipes should be descriptive. Short obtuse names are not recommended since it should be obvious to the observer which recipe is associated with which observing mode. In general, recipe names are read from the file header, the location of which is specified by the instrument specific classes in the orac-dr. If required though, the recipe can be specified on the command line although this can cause problems if the user specifies the wrong observation numbers.
orac-dr searches in two locations for the recipe files. First, the directory specified by the
ORAC_RECIPE_DIR
environment variable, if defined, is searched. This allows users of the pipeline to
modify a standard recipe without editing the original. If the variable is not set or the recipe can not be
found, the default location of $ORAC_DIR/recipes/$ORAC_INSTRUMENT
is searched (although Orac-dr can
sometimes be used to modify the value of ORAC_INSTRUMENT
during initialization). The pipeline aborts
if the recipe cannot be located.
2orac-dr does not enforce this rule though and it is possible to include Perl constructs in private recipes and for testing. It should not be done for production code.