Hapstar is released, and now has it’s own website. Here’s a screenshot of an example haplotype network of human and neanderthal DNA sequences.
Hapstar is the new name for my little bioinformatics project, visualising population structure from differences between genetic sequences. The last few days I’ve done a lot of work on the GUI, allowing you to drag nodes around by hand, zoom in and out and navigate the graph. Also quite a bit of graph theory, validating the input graphs by detecting if they are a single connected component – or contain isolated graphs. It’s already been used to produce figures for an upcoming publication, so hopefully I can show some real examples soon.
A small bioinformatics project in progress:
Haplotype networks and Minimum Spanning Networks are commonly used for representing associations between sequences. HapNet is a tool for viewing both types of networks, using the output data generated from Arlequin. HapNet automatically formats the network in the optimal layout for easy visualisation, and publication-ready figures can be exported in several formats.
After calculating the minimum spanning trees of the networks, my initial reaction was to use graphviz for this, as it seems perfect for the job. However, I had a lot of trouble with the different length edges, and the need to represent distance with intermediate nodes which have to be on a straight path. As I’d already written force directed graph drawing for daisy it wasn’t too hard to adapt. Source code here, and the start of a proper webpage on the libarynth.
If I ran one of these new fangled ‘new media arts’ courses (or whatever they are called now) I’d force students to restrict themselves to only using graphviz for several months. These are some accidents which happened trying to visualise haplotype networks for some biology visualisation work I’m doing:
Alex Mclean has some more impressive graphviz drawings here. I’m actually having to abandon graphviz as it wont cope with different length edges very well. I expect this will come back to bite me.