package bistro

  1. Overview
  2. Docs

A library to build scientific workflows.

This module introduces a type 'a worfklow that describes a set of inter-dependent steps that will eventually generate a value of type 'a. Steps may be either command lines to be executed, or OCaml expressions to be evaluated.

To build shell-based workflows, use the Shell_dsl module, that provides 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 pworkflow) : 'a gz pworkflow =
  Workflow.shell ~descr:"unix.gzip" [
    cmd "gzip" [ string "-c" ; dep x ; string ">" dest ]
  ]

Base types

type 'a workflow

Representation of a computational pipeline. Constructors are provided in the Workflow module. 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 path

Abstract representation of a path in the filesystem. The type parameter can be used to provide information on the format of a file (this is an instance of phantom-typing).

type 'a pworkflow = 'a path workflow

Type alias for path workflows

class type file = object ... end

Base class for files when typing a path

class type directory = object ... end

Base class for directories when typing a path

type 'a dworkflow = < directory ; contents : 'a > path workflow

Type alias for workflows that produce a directory

Building shell-based workflow

module Template_dsl : sig ... end

Representation of scripts

module Shell_dsl : sig ... end

Command-line construction

module Workflow : sig ... end

Workflow constructors

module Private : sig ... end

Access to internal representation

File formats

class type text_file = object ... end
class type 'a sexp_value = object ... end
class type binary_file = object ... end
class type pdf = object ... end
class type html = object ... end
class type png = object ... end
class type svg = object ... end
class type tsv = object ... end
class type 'a zip = object ... end
class type 'a gz = object ... end
class type 'a bz2 = object ... end
class type 'a tar = object ... end