-
Notifications
You must be signed in to change notification settings - Fork 101
FAST Text Pipelines
FAST has a system for defining pipelines using simple text files. This enables you to create processing and visualization pipelines without programming and compiling, making it very easy to test pipelines with different parameters and input data.
To run a pipeline use the executable runPipeline in FAST like this:
./runPipeline /path/to/pipeline.fpl [parameters]
Here is a minimal example of how you can run a text defined pipeline with a window:
Pipeline pipeline("/path/to/pipeline.fpl");
pipeline.parse();
auto window = MultiViewWindow::New();
for(auto&& view : pipeline.getViews())
window->addViews(view);
window->start();
The FAST text pipeline syntax aims to be simple and is without symbols such as :, (), [] and {} to simplify writing and readability. To start off here is a very simple pipeline which only reads an image from a file and then renders it on screen:
PipelineName "Simple image pipeline" PipelineDescription "Import a single image from disk and visualize it on screen" ProcessObject importer ImageFileImporter Attribute filename /path/to/some/image.png Renderer renderer ImageRenderer Input 0 importer 0 View view renderer Attribute 2Dmode true
Here is a more complex pipeline with multiple process objects, renderers and views:
PipelineName "Non Local Means" PipelineDescription "Non Local Means speckle filtering with colormap and reject" # Processing chain ProcessObject streamer ImageFileStreamer Attribute fileformat /path/to/some/sequence/data/frame_#.mhd ProcessObject filter NonLocalMeans Attribute block-size 3 Attribute search-size 11 Attribute smoothing 0.15 Input 0 streamer 0 ProcessObject enhance UltrasoundImageEnhancement Attribute reject 25 Input 0 filter 0 # Renderers Renderer renderer ImageRenderer Input 0 enhance 0 Renderer renderer2 ImageRenderer Input 0 streamer 0 # Define views View view renderer Attribute 2Dmode true Attribute background-color black View view2 renderer2 Attribute 2Dmode true Attribute background-color black
There are 3 type of objects: ProcessObject, Renderer and View.
Each object is defined in a block with newlines before and after to separate it from other objects.
A process object block starts as follows: ProcessObject <user specified objectID> <ObjectName>
A renderer object block starts as follows: Renderer <user specified objectID> <ObjectName>
A view object block starts as follows: View <user specified objectID> [<renderer1> <renderer2> ...]
Each object can have a number of attributes which are defined after the start of the block with the following syntax:
Attribute <attribute-name> <value>
Process objects and renderers are connected with the following line:
Input <input port ID> <object X to connect to> <output port ID of object X>
A pipeline can have parameters that has to be set by a user. Parameters are enclosed by @@. Let's say you want the user to specify which image file to open when running the pipeline, you can do as follows:
ProcessObject importer ImageFileImporter Attribute filename @@filename@@
You can also specify a default value @@parameter-name=default-value@@
:
ProcessObject importer ImageFileImporter Attribute filename @@filename=/path/to/an/image.png@@
You can write comments by starting with hash sign #
The variable
If you want to connect an existing pipeline or process object to a text pipeline you can do when parsing the pipeline file using the Pipeline object:
Pipeline pipeline("/path/to/pipeline.fpl");
pipeline.parse({{"objectX", objectX}});
In your text pipeline file:
ProcessObject objectY ObjectY Input 0 objectX 0
Parameters can be specified in the Pipeline constructor.
Pipeline pipeline("/path/to/pipeline.fpl", {{'parameter-name', 'parameter-value'}});
If you run from the command line you specify parameters after the pipeline file name:
./runPipeline /path/to/pipeline.fpl --parameter-name parameter-value
If this wiki page lacks some information or is incorrect please let us know! You can edit this wiki page yourself, send an email to [email protected] or