Haskell Packages

Generalized ADPfusion:

Package Status
ADPfusion Build Status
AlignmentAlgorithms Build Status
FormalGrammars Build Status
GrammarProducts Build Status
OrderedBits Build Status
PrimitiveArray Build Status

Applications in Bioinformatics:

Package Status
CMcompare Build Status
Dna Protein Alignment Build Status
RNAdesign Build Status
RNAwolf Build Status
SimulateGeneDuplications Build Status

Applications in Computational Linguistics

Package Status
WordAlignment Build Status

High-level Libraries for Bioinformatics and Linguistics

Package Status
Phylogenetics Build Status
RNAdraw Build Status
RNAmodules Build Status

Low-level Bioinformatics Libraries:

Package Status
BiobaseBlast Build Status
BiobaseInfernal Build Status
BiobaseFR3D Build Status
BiobaseMAF Build Status
BiobaseNCBI Build Status
BiobaseNewick Build Status
BiobaseTurner Build Status
BiobaseTypes Build Status
BiobaseXNA Build Status
ViennaRNA-bindings Build Status

Low-level Linguistics Libraries:

Package Status
NaturalLanguageAlphabets Build Status

Low-level Libraries:

Package Status
bimaps Build Status
fgl-extras-decompositions Build Status
SuffixStructures Build Status

general biohaskell information

Information regarding bioinformatics and Haskell can be found on the biohaskell wiki. There are pointers toward the mailing list as well.

Ketil Malde and I are working on splitting up our bioinformatics libraries into smaller ones. Each library is supposed to do only one thing. This goes against the trend of having all-encompassing bioinformatics libraries but allows us to push new versions easily – at least that is the plan.

I write software for RNA secondary structure, whole genome ncRNA search, miRNAs and other stuff.

individual library and program descriptions

Note that with the library split, the loader will generally use the enumerator / iteratee packages. Furthermore, I’m strongly considering switching to iteratee completely due to the parallel-composition options.

All described packages are either already in a form, where they provide library functions and in addition, a program; or will soon be.


This library is currently in the process of being dismantled. Individual data sources go in the BiobaseZZZ libraries. I’ll probably keep it around for some common / often used things.


Parsers for Vienna dot-bracket like formats. Includes parsing two-line RNAfold output, RNAstrand dot-bracket notation and the RNAwolf extended RNA secondary structure notation.


Provides importers for FR3D resource files. Of particular interest are basepairs files which describe canonical and non-canonical (non-Watson-Crick) base pairings in RNA secondary structure.


Loads different Infernal file formats. Understands taxonomy files, and verbose hits. Other parsers will be (re-)integrated soon, as they are still based on parsec3.


Provides a loader for MAF files. Based on Oleg Keselyovs and John Latos iteratee.


Parameter training for RNA secondary structure prediction tools requires data to train on. Since there are a number of different available formats, and handling them all in the training tools is a pain, we have this library and programs. MkTrainingData transforms different formats and they all produce a common training data format. This format is Haskell-readable (and only partially human-readable) line-by-line. Generating additional training data is therefor easy as one can just cat together different training files.


A data structure for Mathews / Turner RNA and DNA energy parameters. This library currently only provides an importer, not export functions. There are two reasons: (i) We currently have no use-case where we need more than import facilities (ii) The file structure is geared towards humans, not machines. If you need to be able to export, send a mail.


Provides representations and functions for RNA primary and secondary structure.


main page

(no library yet, only an executable)

A program to compare two Infernal covariance models. Useful to determine if a newly designed structural multiple alignment in CM form has high discriminatory power. If it does not, it will produce a lot of false positives.


main page

A polynomial-time variant of the MC-Fold RNA folding program by Parisien and Major. Part of our ongoing effort to provide asymptotically fast prediction tools for extended RNA secondary structures.


Haskell version of the ViennaRNA RNAfold program. This is only the library. The program can be found in RNAFoldProgs, but this will change soon.


main page

The algorithm implemented here-in provides extended RNA secondary structure prediction. Each predicted nucleotide pairing is extended with an annotation describing which of three nucleotide edges is engaged in the pairing. In addition, each nucleotide may be engaged in more than one pairing.


Some helper functions. This library needs a clean-up.