Skip to content
cth edited this page Nov 22, 2012 · 13 revisions

BANpipe is a logic-based scripting language designed to model complex compositions of time consuming analyses. The language (which itself is written in Logtalk) supports complex pipelines of Prolog programs, PRISM models and other types of programs through rules which specify dependencies between computations.

Pipelines for machine learning, natural language processing and biological sequence processing are often complex compositions of time consuming analyses, including calls to external resources and databases. The expected output, intermediate results and original input data are often huge files. Banpipe is designed to facilitate such computations.

Banpipe is a general pipeline programming language, but it is designed to support a special kind of annotation pipelines which we call Bayesian Annotation Networks (BANs). A Bayesian Network is a directed acyclic graph where the nodes are conditional probability distributions and the edges represent conditional dependencies. A BAN is a Bayesian Network where nodes are instead (probabilistic) annotation programs and edges are input/output dependencies between programs. Inference in BANs is performed iteratively by evaluating each program at a time and using its output annotation as input for dependent programs. This is not only similar to the way forward analysis takes place in Bayesian networks, but also a nice fit to the pipeline paradigm.

Banpipe is implemented in Logtalk and is portable across multiple Prolog systems. It has been tested using B-Prolog and SWI-Prolog. To run logtalk, you need Logtalk plus at least one Prolog system installed.

Where to go from here

Installation Describes how to install and setup banpipe

Running banpipe Describes how to run, typecheck and debug banpipe scripts

Modules Describes how to create banpipe modules

Clone this wiki locally