package bistro

  1. Overview
  2. Docs

A library to build scientific workflows.

This module introduces a type 'a workflow 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).

class type regular_file_t = object ... end

Base class for files when typing a path

class type directory_t = object ... end

Base class for directories when typing a path

type 'a file = regular_file_t as 'a path workflow

Type alias for workflows that produce a regular file

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

Type alias for workflows that produce a directory

Building shell-based workflow

type container_image
module Template_dsl : sig ... end

Representation of scripts

module Shell_dsl : sig ... end

Command-line construction

module Workflow : sig ... end

Workflow constructors

File formats

class type text = 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 csv = 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
module Private : sig ... end

Access to internal representation