OneZoom software tools for researchers and developers

Our code is the work of over ten years and is available on a public Github repository. We're still improving our software iteratively and welcome collaboration. This website is running OneZoom 3.5-26-g39021c81

Introduction

We have a whole range of tools available here, including APIs, an index of species popularity and source code, but we're always working on the next enhancements and are trying to build a developer community. Please don't struggle on if you hit difficulties or have concerns, instead contact us so we can work together on solving your problem. If you've done something special with OneZoom please let us know. Perhaps you've used it for teaching, visualising your own data or in a public display? OneZoom is a non-profit organisation and our purpose is to advance the education of the public in the subjects of evolution, biodiversity and conservation of the variety of life on earth.

    Hosting your own variation of the OneZoom complete tree of life explorer.

    If you contact us we can provide help and add you to our developer community from which you can receive support. The keys steps to getting started are as follows...

    1. Read the license, plain language license FAQs and readme documentation, ask us about any queries or concerns.
    2. Pull the latest version of OneZoom from our public GitHub repository and follow the instructions in the readme file.
    3. Contact us for a database dump (which will include everything we have except for sponsorship information). Alternatively run our Python scripts to generate your own data, but this will be harder and involves many steps including getting large source data dumps from Open Tree of Life and Wikipedia as well as intensive use of the IUCN and EOL APIs to acquire further data.
    4. Optional: get copies of the images from us so they can be hosted in an environment disconnected from the internet, such as a touch table without a network connection.

    Languages and frameworks used for OneZoom

    The website is written as an application of the Web2py framework with SQL database. Most of the server side code is therefore written in Python, including those which are run outside of Web2py for data synthesis and preparation. The tree explorer itself is written in ECMAScript, which is compiled into javascript. The tree view is painted onto a javascript canvas and styled by functions wrapped inside the ECMAScript. All other pages, including the tree of life explorer user interface around the tree view, styled using SASS, which is compiled into CSS. We use Grunt and NodeJS for scripting compilation tasks. We have expanded on all this in a recent publication: "Dynamic visualisation of million-tip trees: the OneZoom project" Yan Wong, James Rosindell (2020)bioRxiv 2020.10.14.323055 doi: 10.1101/2020.10.14.323055. There is also extensive documentation in the readme files on our Github repository

    OneZoom module structure

    The OneZoom core is separated into three layers: external data acquisition, server-side synthesis of data, and the client-side tree of life explorer itself. Around the core there are two other components: our bespoke crowd funding system for managing leaf sponsorship (which is our primary means of funding) and other web pages outside of the tree viewers.

    The database output includes the complete tree of life (mostly provided by the open tree of life) mapped with i) vernacular names, ii) extinction risk data from the IUCN, iii) IDs for species in a range of other resources, iv) our popularity index scores for all species and iv) representative images for interior nodes of the tree. We can imagine these data being useful for a wide range of third party projects not necessarily concerned with tree visualisation at all. For example Malachi Willey recently used the OneZoom back end to support the website Phyloquiz, a fun generator for phylogenetic quizzes that automatically generates multiple choice questions about the relationship between species. Another example is Phylotastic, which uses our popularity index as a way to automatically subset trees.

    For projects focused more on visualisation of large trees within a zooming user interface, almost all of our codebase can be reused. The 'Tree Projection' module in our block diagram above defines a collection of lines and points to describe a large tree. The fact that it is abstracted from the rest of the code is important because it means that if you have a different way in mind to lay out a large tree, you can implement this whilst only making changes to the tree layout module. Your view would automatically benefit from access to the complete tree data, access to associated metadata, a zooming user interface, procedures to fly and jump around the tree, and all the performance optimisations that go on behind the scenes to much such large visualisations tractable.

    The way in which leaves, nodes and branches are drawn at their defined points is defined by a separate module. So you could redesign the shapes of leaves and nodes, or the content that is displayed on them at different levels of zoom, and then reuse these leaves on any tree projection. The colour scheme of the tree, as a function of tree properties and metadata, is another abstracted block of code defining leaf, node and branch colours independently from their shapes or layouts. The rendering of shapes on canvas too is done in a separate module and could (in theory and with a bit of work) be swapped out for another rendering solution (e.g. WebGL or d3) without affecting the other parts of code. So, you could combine together any colour scheme, any leaf and node design, any tree 'projection' and any drawing module.

    Web browser compatibility

    1. Safari, Chrome, Mobile devices: full compatibility but please keep up your software up to date.
    2. Firefox: full compatibility but not as responsive as Safari and Chrome.
    3. Opera, EDGE, Internet Explorer 9 and above: near full compatibility occasionally minor features don't work.
    4. General: make sure that Javascript is enabled and that your browser supports HTML5 and canvas.

Using source code from our public GitHub repository or Docker image

All our live source code is available to view on our public GitHub repository. We also provide two Docker images of our latest codebase: oztree-complete contains everything you need to run OneZoom with no live internet connection, oztree is a download of reduced size that uses the internet to grab images as needed from the OneZoom server.

Some parts of our codebase are available for reuse under OSI approved fully open source licenses. All other parts can be freely reused under a OneZoom non-profit source available license. This basically means they are free to use for the advancement of science and science education, but not for commercial purposes. We know that 'commercial' can be an elastic term, we are willing to interpret this in a relaxed way to support any project whose aims are consistent with our own mission statement. If you think this applies to you, please write to us and we'd be happy to consider providing you with a letter confirming that we don't consider your project to be commercial. For further details please see our plain language license FAQs.

Our objective is to encourage broad reuse of the OneZoom code whilst also protecting our unique model for maintaining the codebase and sustaining the live website. If the OneZoom organisation ceases to exist our software will automatically become available under an OSI approved MIT license. Remember that OneZoom is a registered not for profit organisation and the majority of work is done by unpaid volunteers. If you have suitable software development expertise and want to contribute please let us know, we'd be delighted to work with you.

OneZoom software versions

There have been 11 substantial upgrades to OneZoom over the last 9 years with versions spanning from version 1.0 (October 2012) to version 3.5 (October 2021). Some features from earlier versions have not been retained in the latest software, so versions 1.0 and 1.2 remain supported to provide access to these features - such as customisation of the view to accommodate a user's tree and the growth animation function for dated trees.

Version 3.5 'chocolate chip starfish' (current version - October 2021)

Includes all the features of version 3.4.1 but adds several improvements i) improved colour scheme for showing extinction risk of species ii) added colour scheme for showing the popularity index of species as a continuous colour gradient iii) main colour schemes now show randomly resolved polytomies in a different way on the tree for improved scientific accuracy and to avoid misunderstandings about the level of accuracy in the current tree. iv) colour blind friendly mode available for all colour schemes v) improved tabs for each species linking to other resources with better explanation around the IUCN resources and added links to GBIF vi) substantial improvements to the content and interpretation pages throughout the site vii) new resources explaining how to use the tree of life explorer viii) docker images for easier deployment by third parties ix) a range of minor bug fixes.

  • Version 3.4.1 'nervous shark' (obsolete)

    Includes all the features of version 3.4 and adds new APIs to access vernacular names, ID mappings and representative images.

  • Version 3.4 (obsolete)

    Includes all the features of version 3.3.1 and adds a completely redesigned landing page together with improvements to the site content as a whole.

  • Version 3.3.1 (obsolete)

    Includes all the features of version 3.3 and adds code to build a museum tree of life display exhibit in seconds. In particular, i) the user interface has been customized for museum display use, ii) the display URL has been 'sandboxed' so that users can't break out and explore material outside the tree of life and taxa pages on Wikipedia, iii) a new tutorial has been added to the display, and iv) a 'screensaver' function ensures that unattended displays automatically reset and fly around the tree to attract potential users passing by. A new launch page enables customization of the museum display including the home taxa location, language, view type and other settings. Version 3.4 also features some updates to the menus and pages on the website outside of the tree of life explorer.

  • Version 3.3 (obsolete)

    Includes all the features of version 3.2 and adds a polytomy view, performance enhancements, changes to the way images are processed to enable compatibility with the latest version of the Encyclopedia of Life, and specific developments to support the One Tree, One Planet tree view.

  • Version 3.2 (obsolete)

    Includes all the features of version 3.1 and adds enhanced multi-language support, a new user interface for the tree explorer and a documented framework enabling others to easily design a complete OneZoom tree into their website or public display without needing to touch the core software.

  • Version 3.1 (obsolete)

    Includes all the features of version 3.0 and adds substantial performance enhancements as well as basic multi-language support. Behind the scenes the core visualisation software has been entirely refactored and modularised in ECMAScript 6.

  • Version 3.0 (obsolete)

    Includes all the features of version 2.0 and adds dynamic loading and caching systems so that the entire tree of life can at last be viewed on a single page. A common ancestor search function was also added as well as a URL parser that stores your position in the tree.

  • Version 2.0 (obsolete)

    A more advanced website incorporating a tree that spans the whole of life, semi-automated systems to keep the tree up to date, the ability to sponsor a leaf on the tree, improved visual design, and an enhanced user interface. This version incorporates mobile and touch screen support as well as embedded images from version 1.2 kiosk.

    Some features were lost from version 1.2 variants: there is no longer an animal sound player, growth animation, kiosk version, customisable html embed function, or feature to load your own phylogeny. Version 1.2 still runs within version 2.0 to provide legacy support of these features.

  • Version 1.2 kiosk

    This is very different from the other version 1.2 variants in terms of functionality. This code provides an easy to deploy explorer for touch screen environments in public venues. It has been developed using feedback from surveys and observations made at venues hosting the display. Features include... embedded images, embedded animal sounds, dynamic zooming around the tree when not in use, full search functionality and a bespoke on screen keyboard so that the system keyboard need not be exposed to users.

    Download OneZoom version 1.2 kiosk , note that to function properly this also requires raw data that is not included in the download. You will need to unzip the software, then contact us to request an example data set (we have tetrapods and plants). You can then use this to learn the file formats and layouts necessary to input your own data without needing to edit the code itself.

  • Version 1.2

    The most advanced OneZoom website that can be hosted simply by copying the files into your webspace. More recent versions of OneZoom from 2.0 onwards require running your own Python based webserver and SQL database server.

    All downloads of OneZoom version 1.2 are released under an MIT license which is OSI approved. Please note that the zip files also contain Boot Strap and jQuery which are built by third parties and licensed for further use under those third party license rules (please open the source files for information). The zip files may also include icons for e.g. facebook and twitter which are should be used under the terms of those organisations but are provided here for convenience.

    Download OneZoom 1.2, this is the complete OneZoom website fully functional as it was live online until April 2016 when version 2.0 was released.

    Embed a customised OneZoom tree in your website using version 1.2.

    Without downloading or installing any software you can still use our embed and link tool if you want to embed custom versions of a tree that's already on OneZoom. After selecting the settings you want the page will generate a short piece of code that you can copy any paste into your website to give you a OneZoom visualisation. This can incorporate highlights of pairs of taxa and their common ancestors as well as zooming animations and user interaction. If you want to use your own tree data, however, you will need to download the code and edit the data sources.

  • Version 1.2 lite

    A cut down version 1.2 designed to be easier to edit and use to build your customised explorable tree pages. Download OneZoom 1.2 lite

    Making supplementary material for your papers using version 1.2 lite

    If you've got a big and impressive tree and are interested in having it appear on OneZoom we can work with you on this, and we can time the date your page goes live with the embargo period of your associated journal publication.
    1. Download and uncompress the cut down version of the 2015 website.
    2. You should only need to edit the files in the user directory - there are two examples here, one for tetrapods and the other for plants.
    3. Each example data set contains a Newick tree file (no polytomies) and a metadata file which is indexed by numbers that must correspond to the leaves of the tree file.
    4. Finally, there is a Javascript file in which you can edit much of the tree drawing without having to worry about the core tree drawing parts of the code.
  • Version 1.0

    The first version of OneZoom with basic features released alongside a publication in PLoS Biology. This version of OneZoom will still be useful if you want to quickly explore a Newick formatted phylogeny online. It also has the advantage of comprising of a single easily portable file which includes all code and data, later versions of OneZoom all use complex directory structures containing a range of files. Download OneZoom version 1.0 licensed under an MIT license which is OSI approved.

    View your own data online using version 1.0

    Please note that compared the latest version of OneZoom, this version 1.0 visualisation may appear clunky, and there is no touch screen support. The feature to load your own data was dropped from version 2.0 and above so that we could focus our limited resources more effectively on providing an easily accessible explorer for the complete tree of life. It would be a relatively small package of development to make the latest version of OneZoom capable of displaying other trees.

    If you do go ahead and use this feature as it stands now, your data is only stored on your personal computer for this visualisation and is not transmitted over the internet so it is safe to visualise unpublished data in this way. If you prefer, you can still download OneZoom version 1.0 and do everything locally and offline.

    1. First, load the original single stand alone file version of OneZoom in a new window. This code is a slightly updated version of the supplementary material to the article in PLoS Biology. The code is also available for download as a zip in the downloads section of this page.
    2. The mammal data will load by default. On the top of the page there is a row of buttons: Search, Grow, Options, Data, Reset, ... You need to press the "Data" button.
    3. A text box will appear at the bottom of the page, next to this is a button titled "Load data".
    4. Your data should be in Newick format with no polytomies (polytomies should be expressed with a number of nodes connected with branch lengths of 0). Branch lengths, if present, should be ultrametric and calibrated with units of millions of years.
    5. Only load one tree at a time and make sure there is no other text either side of the Newick code for that tree. Copy and paste the Newick format data for your tree into the text field at the bottom of the page and press the "Load data" button. Don't worry if your computer doesn't seem to have put all the data into the text box. Not all browsers are used to having very long strings of data in the text box, but the data is normally still there and loading will still work.
    6. Be patient, if your tree has 50,000 nodes or more it can take a minute or so to load and may use a noticeable chunk of ram on your computer. Most computers should be able to handle tress with 1 million nodes or more if you are willing to wait for it to load.