Following on from the
SVG experiments I've started to put some of the Javascript code for displaying phylogenies on Github. Not a repository yet, but as
gists, little snippets of code. Mike Bostock has created
http://bl.ocks.org/ which makes it possible to host gists as working examples, so you can play with the code "live".
The
first gist takes a Newick tree, parses it and displays a tree. You can try it at
https://bl.ocks.org/d/4224658/.
The
second gist takes a basic NEXUS file containing a TREES block and displays a tree (try it at
http://bl.ocks.org/d/4229068/ ). You can grab examples NEXUS tree files from
TreeBASE such as
tree Tr57874.
Why am I doing this?Apart from "because it's fun" there are two reasons. The first is that I want a simple way to display phylogenetic trees in web pages, and doing this entirely in the web browser (Javascript parses the tree and renders it in SVG) saves me having to code this on my server. Being able to do this in the browser opens up the opportunity to embed tree descriptions in HTML, for example, and have the browser render the tree. This means the same web page can have machine-readable data (the tree description) but also generate a nice tree for the reader. As an aside, it also shows that TreeBASE could display perfectly good, interactive trees without resorting to a Java appelet.
The other reason is that the web seems to be moving to Javascript as the default language, and JSON as the standard data format. Instead of large chunks of "middleware" (written in a scripting language such as Perl, PHP, or, gack, Java) which is responsible for talking to databases on the server and sending static HTML to the web browser, we now have browsers that can support sophisticated, interactive interfaces built using HTML and Javascript. On the server side we have databases that speak HTTP (essentially removing the need for middleware), store JSON, and use Javascript as their programming language (e.g., CouchDB). In short, it's
Javascript, Javascript, everywhere.