The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Notes on the compilation part of the bioperl

DESCRIPTION

These are notes on the compiled part of the bioperl stuff. This only for people who are curious about the underlying compile C/XS extension used by bioperl

First off, Ewan Birney <birney@sanger.ac.uk> is solely responsible for this stuff.

The compiled extensions come from my Wise2 software project, which has a large number of algorithms and objects in C. These objects are in fact built using my own, home grown language called dynamite, and I have provided in dynamite the ability to load things into perl using the XS interface.

The compiled extensions for each area will generally end up in one 'module' (perl speak for one set of XS functions that is dragged in using the bootstrap command) although inside the module they can be multiple packages (packages being the usual package command in perl).

In bioperl the module is bp_sw (bioperl smith waterman) and packages inside it are bp_sw and things like bp_sw::Sequence etc. The precise functions which are provided are in the bp_sw.xs file in the SW subdirectory. (the reason why this is in a sub directory is to allow multiple compiled portions to be provided).

In bioperl you are not expected to access this package directly as it requires too much programming knowledge and also doesn't coordinate with the rest of bioperl. Instead helper object provide a second layer on top of the bp_sw package. For this reason I call the bp_sw 'the engine' in the sense that it is in some ways completely isolated from the rest of bioperl

The only layer I have put on so far is the smith waterman pairwise alignments. Soon I will add smith waterman database searching code and Sean Eddy's histogram package (EVD fitting).

Guts of the XS extension

You may well be interested in the actual nuts and bolts of the XS extension (I know that for me it took a while to figure out what was going on). The XS extension is only possible because I can a very nice C API. I think most of the problems in making XS extensions are due to limitations in the C API.

Not finished yet