Hacking on Bioruby

Last week the Regional Student Group of Eastern Africa brought fifteen biologists, bioinformaticians, and computer scientists to ILRI for a three-day hackathon. Students and professionals from Kenya, Tanzania, and Uganda worked in teams to augment Bioruby (a bioinformatics library for the Ruby programming language) with a wrapper for BepiPred, a tool which predicts the location of linear B-cell epitopes.

Alan Orth teaching

George Githingi teaching

Group photo

Because of the complexity of the project, we started with an introduction to some of the tools we’d be using. I gave a talk on the basics of software version control, including branching and merging using the git software version control system, and George gave a hefty introduction to the Ruby programming language and the Bioruby library. All participants were given Linux-based virtual machines with the required tools preinstalled.

The source code for the Bioruby project is hosted on github.com, as is a customized fork of that code made by George Githingi which adds a skeleton for our BepiPred modifications. As part of the introduction to git everyone made their own forks of George’s Bioruby repository. The idea was that teams would work locally, writing and testing code in their own repositories, then send the code back to github.com where it could be merged with George’s (and, if good enough, back upstream into the main Bioruby repository).

I still have no idea what a B-cell is (other than that we don’t know where they are), but I learned a lot about how git works. Also, I was really impressed with the github.com service and the infrastructure they provide. One example is their network graph viewer, which shows commit activity between related forks:

georgeG’s Bioruby network graph

The original graph is larger (and much more interesting), but in this snapshot you can at least see some arrows coming and going from George’s Bioruby fork. Each line touching “georgeG” is one of our participants, and each dot represents one commit. A “commit” is a change to the code, either in lines of text or files added/removed to the repository. On a related note, you can see a list of commits to George’s repository here.

If you’d like a copy of my Introduction to git slides, look no further: intro_to_git.ppt.