The LOFAR pipeline system developed partly from the WSRT Cuisine, developed by Adriaan Renting for use at the Westerbork Synthesis Radio Telescope. Many of the basic concepts (the recipe, with associated inputs and outputs, for example) originated in the Cuisine system, and the user is encouraged to refer to its documentation where necessary.
A slightly modified version of the “original” Cuisine is distributed as part of the lofarpipe package. The modifications include:
It is hoped that these changes will eventually be merged upstream.
Very little of the original Cuisine code is currently used in the LOFAR framework, although the lofarpipe.cuisine.WSRTrecipe.WSRTrecipe is still used as the basis for all LOFAR recipes. The recipe author, however, is never expected to directly interact with Cuisine code: all LOFAR pipeline recipes inherit from lofarpipe.support.baserecipe.BaseRecipe, which entirely wraps all relevant Cuisine functionality. The lofarpipe.support inheritance diagrams show exactly how these packages are related. The following API documentation covers only those routines directly used by the rest of the pipeline system, not Cuisine as a whole.
Base class for recipes, pipelines are created by calling the cook_* methods. Most subclasses should only need to reimplement go() and add inputs and outputs. Some might need to addlogger() to messages or override main_results.
Shows helptext and inputs and outputs of the recipe
Main initialization for stand alone execution, reading input from the command line
This function is to be run in standalone mode.
This code will run if all inputs are valid, and wraps the actual functionality in self.go() with some exception handling, might need another name, like try_execute, because it’s to similar to go().
Main functionality, this empty placeholder only shows help
Main results display for stand alone execution, displaying results on stdout
Execute another recipe/pipeline as part of this one
A system for spawning a recipe, providing it with correct inputs, and collecting its outputs.
Ensure inputs are available to the recipe to be run
Pass outputs from the recipe back to the rest of the pipeline
Copy inputs to the target recipe then run it
Run the recipe, inputs should already have been checked.