Legend:
Library
Module
Module type
Parameter
Class
Class type
A library to build scientific workflows.
This module introduces a type 'a worfklow that describe a set of inter-dependent actions that will eventually generate a target (file or directory). The 'a type represents the format of the file or the layout of the directory. Actions may be either command lines to be executed, or OCaml expressions to be evaluated.
To build workflows, use the EDSL module, that provide a set of combinators to write shell scripts easily. For instance, the following function shows how to create a gzipped file using the output of another workflow:
let gzip (x : 'a workflow) : 'a gz workflow =
workflow ~descr:"unix.gzip" [
cmd "gzip" [ string "-c" ; dep x ; string ">" dest ]
]
Note that a workflow is just a recipe to build some result. Building the workflow won't actually generate anything. In order to run the workflow, you have to run it using an execution engine like the one provided by bistro.engine.
type+'a workflow
The type representing a set of actions (shell scripts or (evaluations of OCaml expressions) to build a target of type 'a. The type 'a is a phantom type, which can be used to enforce static invariants.
Conventional type to represent file targets. The object type is to represent properties of the file, like the type of encoding (text or binary) or the format.
Describes the (relative) path from a 'a directory workflow target to some 'b workflow target. This is useful to construct new workflows by selecting a file or surdirectory in the result of a directory workflow.