Abstract

Motivation: Dynamic programming is ubiquitous in bioinformatics. Developing and implementing non-trivial dynamic programming algorithms is often error prone and tedious. Bellman’s GAP is a new programming system, designed to ease the development of bioinformatics tools based on the dynamic programming technique.Results: In Bellman’s GAP, dynamic programming algorithms are described in a declarative style by tree grammars, evaluation algebras and products formed thereof. This bypasses the design of explicit dynamic programming recurrences and yields programs that are free of subscript errors, modular and easy to modify. The declarative modules are compiled into C++ code that is competitive to carefully hand-crafted implementations.This article introduces the Bellman’s GAP system and its language, GAP-L. It then demonstrates the ease of development and the degree of re-use by creating variants of two common bioinformatics algorithms. Finally, it evaluates Bellman’s GAP as an implementation platform of ‘real-world’ bioinformatics tools.Availability: Bellman’s GAP is available under GPL license from http://bibiserv.cebitec.uni-bielefeld.de/bellmansgap. This Web site includes a repository of re-usable modules for RNA folding based on thermodynamics.Contact: robert@techfak.uni-bielefeld.deSupplementary information: Supplementary data are available at Bioinformatics online

Highlights

  • 1 MOTIVATION AND BACKGROUND We review the difficulties experienced in the development of dynamic programming algorithms, and outline how Bellman’s GAP alleviates them

  • In an informal mode, the concepts of the algebraic discipline of dynamic programming (DP) (ADP), which circumscribe the scope of problems supported by Bellman’s GAP

  • The tool RNAshapes predicts RNA secondary structure classified by abstract shapes (Steffen et al, 2006), and the tool pknotsRG predicts structures including simple pseudoknots and kissing hairpin interactions (Theis et al, 2010). Both were originally implemented in the Haskell-embedded version of ADP

Read more

Summary

MOTIVATION AND BACKGROUND

We review the difficulties experienced in the development of dynamic programming algorithms, and outline how Bellman’s GAP alleviates them. The algorithm is implemented in an imperative programming language such as C, Cþþ or Java This stage requires to intermingle recursions and scoring scheme for the sake of runtime efficiency, to decide about space-efficient allocation of tables for intermediate results, to dedicate a substantial amount of work to implement simple, full or even stochastic backtracing and may be to provide an efficient sliding-window version to search through large sequence data. All this requires algorithmic techniques that are known in principle, but must be recreated and adjusted with each application, and which are error-prone to implement and tedious to debug. The recursions can, for example, either be evaluated bottom-up or top-down, the choice of DP tables can be varied, and both single thread and multi-threaded parallel code under the OpenMP standard can be generated where the scoring scheme allows for this

Related work
Background: algebraic DP
Innovations in Bellman’s GAP
THE BELLMAN’S GAP LANGUAGE AND COMPILER
Products in GAP-L
Compiler features
PROGRAM DEVELOPMENT IN GAP-L
Flowgram denoising
Programming with modular components
Code quality
Assessing convenience
Adopting Bellman’s GAP in education
Scope of applications
Future development as a community effort
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call