Main Page

From BioLib
Jump to: navigation, search

BioLib: libraries for the Bio* languages

BioLib brings together a set of opensource C/C++ libraries and makes them available to all Bio* languages: BioPerl, BioRuby, BioPython, BioJAVA and Bioconductor.

Currently supported languages: Perl, Python and Ruby (R and JAVA are planned).


current BioLib modules:

and soon to be included BioLib modules:

  • BioliB SAMtools libraries for BAM/SAM format, next generation sequencing
  • BioliB Emboss the European molecular biology open software suite
  • BioLib Bio++ libraries for sequence analysis, phylogenetics, molecular evolution and population genetics
  • BioLib libsequence library designed to aid writing applications for genomics and evolutionary genetics

If you have a requirement not listed here: please use the Biolib Poll!


  • Biolib is adding SAMtools support (September 2010)
  • Biolib may get into the Google Summer of Code again with some cool project ideas, see the OBF project idea on accessing JAVA from Perl at GSoC2010 and mapping BEAST at Nescent (March 2010)
  • We are heading for SWIG generated documentation, as described at Biolib_Documentation_1.0 (February 2010)
  • First EMBOSS mappings for Ruby, Perl and Python - a write up on mapping EMBOSS (November 2009)
  • Xin Shuai and Adam Smith have finalized mapping libsequence and Bio++ libraries to BioLib. See Xin's project User:David page and blog, and Adam's project page and blog.


  • BOSC Presentation (slides July 2009)
  • Microsoft Windows support added with Cygwin (May 2009)
  • BioLib is getting a boost from the Google Summer of Code initiative, thanks to NESCent (April 2009)
  • GNU Science Library (GSL) support is added to the new ASciLib (A Science Lib) project (April 2009)
  • Python mappings provided for Affyio and Staden (March 2009)
  • BioLib supports OSX; Affyio mapped to Perl (February 2009)
  • Perl and Ruby mappings provided for the Staden io_lib library, for reading of trace files in many formats (January 2009)
  • The source repository has moved to github. The latest changelog is here (November 2008)
  • BioRuby is the first to benefit from BioLib's Affy support. See the Ruby source code on Github (September 2008)
  • BioLib builds for Ruby on Linux - both Ruby gem and a NIX package (August 2008)
  • Affyio library runs for Ruby reading Affymetrix cel and cdf info correctly - see also BioLib Affymetrix (June 2008)
  • An example library gets built for Python, Ruby and Perl using SWIG and cmake 2.6 (June 2008)

see also the Road map. There is potential for other languages like JAVA, R and OCaml.


BioLib pools resources and provides the mechanisms for having one code base for all important programming languages.

The primary mapping mechanism to the Bio* languages is SWIG. SWIG has come a long way in the last years and maps to all modern high-level languages. See also supported data types and BioLib_best_practises .

The primary objective of BioLib is compatibility between languages and multi-platform support. The secondary objective of BioLib is efficiency - both of CPU and RAM (why bother to write in C, otherwise). Think of BioLib as a repository, or kernel, for low-level processing and analysis of biological data. BioLib was incepted at the Tokyo Biohackathon 2008.

For more information see the Road map.


The API of included BioLib modules can be found in the API Documentation. This documentation is generated straight from the source code. Translating the API to the mapped Perl or Ruby methods is straightforward. One example is here, others are in the test files (for Perl, Ruby and Python).


For the latest version of BioLib see the latest RELEASE NOTES.

BioLib releases (tgz, tar.bz2 and zip) can be downloaded from:

For the direct access to the latest source tree use

 git clone git://


Quick instructions : after downloading the source run

 cd biolib
 make test
 make install

which, by default, creates the Perl bindings. Configuration parameters are:

 ./configure --with-ruby


 ./configure --with-python

to install a subset, for example Staden-io-lib for Ruby use

 ./configure --with-ruby --with-staden

For more information read the INSTALL file.


If you need a C/C++/FORTRAN/R module or library linked against one of the popular scripting languages, please make that known through the Biolib Poll. See also Interesting_libraries.


All developers writing low-level bioinformatics libraries are encouraged to contribute. A write-up on what it took to map some of the EMBOSS functionality can be found in Mapping EMBOSS. For a HOWTO read Add C Library. If you feel you have something that can be shared by other developers sign up to the BioLib mailing list (see below).

Unit testing is a critical part of BioLib. Unit tests are conveniently written in high-level languages.

The multiplatform build system is based on CMake. The source trees are maintained with git distributed version control.


Subscribe to the BioLib mailing list here.


General support for major platforms is aimed for, including 32-bit and 64-bit Linux, OS X, *BSD, Solaris and Windows.