Potential framework enhancements

There are a number of areas in which the current version of the pipeline framework could be enhanced. In no particular order, these include:

  • An ingredients system for LOFARnode, so that inputs are checked as they are supplied to nodes.
    • A consistent interface with BaseRecipe, ie relying on an inputs dictionary, should also be supplied.
    • Unfortunately, this can’t be used to validate inputs before starting the recipe, for obvious reasons.
  • Ingredients probably shouldn’t be provided with default values. At least, not default values for things like paths to executables which may sometimes disappear.
  • Error handling throughout should be cleaned up; more exceptions should be caught and better feedback provided to the user.
  • Configuration of the logging system should be made more flexible.
  • Rather than checking exit status, the framework should use a more-Pythonic error handling system based on exceptions.
  • For consistency with the rest of the LOFAR system, parsets should be used for all configuration information.
    • That, in turn, means that the parset format should be standardised.
  • A global job queue per node should be implemented, so that multiple simultaneous recipes can submit jobs without overloading nodes.
  • lofarpipe.support.remotecommand.RemoteCommandRecipeMixIn.__schedule_jobs() should be non-blocking.
  • lofarpipe.support.baserecipe.BaseRecipe.go() and lofarpipe.support.lofarnode.LOFARnodeTCP.run() should be made consistent, in terms of both name and semantics.
  • The logging system should interface more directly with log4cplus, rather than just reading log information from a file.
  • More detailed feedback and quality-check information should be sent to the rest of the LOFAR system.
    • This is an issue which requires changes throughout the LOFAR system; it can’t be addressed by the framework alone.
  • The recipe_directories option should be removed from the configuration file, and the regular Python import mechanism, with appropriate namespacing, should be used to locate recipes.
  • The dependency on lofar.parameterset should be removed, so that the framework is a stand-alone codebase and can more easily be ported to other systems.

Previous topic

The lofarpipe.tests.lofaringredient module

This Page