pipeline.infrastructure.api

The API module defines the common classes around which the pipeline is structured.

A Task represents a coherent step in the data reduction process. A Task may be composed of several other Tasks in order to create a ‘super task’; this ‘super task’ could chains together several related steps in order to select the best method to use for a particular step in the reduction process, for example.

In addition, a Task may be composed of one or more Heuristics. Within the pipeline, a heuristic is considered as a piece of code used to analyse data and/or help influence a pipeline decision, such as whether to stop processing, whether to run again with different parameters, etc. Where appropriate, this code is extracted from the main body of the pipeline code and exposed as a Heuristic.

Something about Task parameters goes here

If a user desires more than to simply override a Heuristic-derived value with a Task parameter, it is anticipated that they will edit the appropriate Heuristic in order to tweak the existing implementation or introduce a new algorithm into the pipeline. Concrete Heuristic implementations can be found in the pipeline.heuristics package.

Inputs, in a general sense, are considered as the mandatory arguments for a pipeline Task. Tasks and Inputs are closely aligned, and just as Tasks differ in functionality, so the number and type of Inputs arguments will differ from implementation to implementation. Refer to the documentation of the implementing subclass for definitive information on the Inputs for a specific Task.

It is anticipated that the Inputs for a Task will be created using the Task.Inputs reference rather than locating and instantiating the partner class directly, eg.:

i = ImplementingTask.Inputs.create_from_context(context)

Classes

Heuristic()

Heuristic is the superclass of all user-accessible heuristics code in the pipeline.

ImagingMeasurementSetsPreferred()

Class used to register Inputs classes that prefer to see post-mstransform data when available.

Inputs()

Inputs defines the interface used to create a constructor argument for a Task.

ResultRenderer()

ResultRenderer is the interface for task-specific weblog renderers (T2-4M details pages in weblog nomenclature).

Results()

Results defines the interface used to hold the output of a Task plus

Task()

The Runnable interface should be implemented by any class whose instances are intended to be executed by an Executor.