Cartwheel Developers Area

Hardly anyone other than Titus Brown is working on Cartwheel and FamilyRelations at the moment, so there's not much incentive to document things. However, ask for more docs and ye shall receive them...

(If you have no idea what Cartwheel and FamilyRelations are, check out the home page for Cartwheel.)

Logically speaking, there are five major "chunks" of separable code in the Cartwheel/FamilyJewels projects. They are:

For a summary of what these are, and why we wrote them, see my PyZine article. You can also check out some other tools at my bio-tools page. Below are rough descriptions of the software from a developers perspective. There is also information on copyright and licenses, necessary libraries and my development environments. Please feel free to contact me at if you want more information.

People interested in this software will probably also be interested in the Wold Lab Bioinformatics Tools.

Cartwheel Web server and job queueing system

This is a sprawling bit of code written in Python, approx. 10,000 lines worth. The Cartwheel job queueing system is a job dispatch and coordination system which uses a Linda tuple space, implemented in PostgreSQL, to distribute various tasks to members of a computer cluster. The Cartwheel Web server is a Quixote-based application that provides a sequence/folder/lab/analysis organization on top of the queueing system.

At Caltech, we run the public Cartwheel server out of CVS, so there is no real "distribution" per se. You can check out the Cartwheel code from SourceForge like so:

% cvs login
(hit enter at the prompt)
% cvs co cartwheel
The 'woodward' and 'beowulf' tags are the current running versions on our Web site and Beowulf cluster, respectively.

FRII graphical user interface

FRII is another big blob of code, this time written in C++. FRII uses the FLTK cross-platform graphics toolkit.

You can get the latest version from SourceForge:

% cvs login
(hit enter at the prompt)
% cvs co FRII
although I'd recommend downloading a pre-compiled binary version for Windows or Mac OS X from to try it out before grabbing it from CVS.

Some documentation, as well as compilation instructions for Linux, are available under the doc/ directory.


cartwheel-clients is a collection of C++, Python, and Java APIs to the Cartwheel Web server and queueing system. Currently only the C++ and Python canal API code is up to date, because it is all that is actively used.

You can get the code by replacing 'co cartwheel' with 'co cartwheel-clients', in the instructions under the Cartwheel server section.


motility is a completely standalone set of code that can be used to search DNA sequences for ungapped matches to IUPAC motifs, Position Weight Matrices, and/or energy operator matrices. It is written in C++ and has a simple Python interface.

You can get more information on motility here.


paircomp is a completely standalone set of code for creating, reading, and manipulating fixed-width window pairwise comparisons of DNA sequences. It is written in C++ and has a simple Python interface.

You can get paircomp by replacing 'co FRII' with 'co paircomp' in the instructions for getting FRII, above.

Note that under the doc/ directory, there are some notes on the theory behind fixed-width window matching.

License and Copyright Information

Everything on this page that I wrote is owned by Caltech. They alone hold the copyright.

However, Caltech's IP office together with my advisor Eric Davidson have been gracious enough to let me release all of the code under either the GPL or LGPL, depending on the package. This means that you are free to take, use, and abuse any and all of the source code for these packages as you will, as long as you extend the same courtesy to everyone else with respect to both the original packages and any modifications you make. Contact me if you have any questions about what this means.

Caltech could well be willing to release parts of this code under a different license; I would be supportive of such an effort, but I'm not interested in pursuing e.g. commercial applications on my own behalf. Let me know if you want me to introduce you to the relevant people in the Caltech IP office.

Necessary Libraries

FRII requires
Xerces-C++, FLTK, and xmlrpc++. You'll find detailed Linux installation instructions for all of these under the FRII doc/ directory, courtesy of Erich Schwarz.

Cartwheel requires Python 2.3 (or above), as well as recent versions of psycopg, PyXML, and Quixote

Supported Development Environments

My primary development environment is Linux.

Under Windows, I use cygwin to build the binary distribution of FRII, which needs motility, paircomp, and the canal.c++ library from cartwheel-clients (so those all build under cygwin too).

On Mac OS X, everything pretty much just compiles once Xerces and FLTK are installed -- hey, it is UNIX...

Last updated May 2004