IcyTree: rapid browser-based visualization for phylogenetic trees and networks

Abstract Summary IcyTree is an easy-to-use application which can be used to visualize a wide variety of phylogenetic trees and networks. While numerous phylogenetic tree viewers exist already, IcyTree distinguishes itself by being a purely online tool, having a responsive user interface, supporting phylogenetic networks (ancestral recombination graphs in particular), and efficiently drawing trees that include information such as ancestral locations or trait values. IcyTree also provides intuitive panning and zooming utilities that make exploring large phylogenetic trees of many thousands of taxa feasible. Availability and Implementation IcyTree is a web application and can be accessed directly at http://tgvaughan.github.com/icytree. Currently supported web browsers include Mozilla Firefox and Google Chrome. IcyTree is written entirely in client-side JavaScript (no plugin required) and, once loaded, does not require network access to run. IcyTree is free software, and the source code is made available at http://github.com/tgvaughan/icytree under version 3 of the GNU General Public License.


Introduction
The visualization of phylogenetic trees is an extremely important aspect of computational phylogenetics. Indeed, the well-known text Inferring Phylogenies (Felsenstein, 2003) devotes an entire chapter to this topic. It is therefore no coincidence that the evolution of phylogenetic tree visualization software has often gone hand-inhand with the development of sophisticated algorithms and software for phylogenetic inference. Many of the earliest available phylogenetic inference packages such as PHYLIP (Felsenstein, 1989), MacClade (Maddison and Maddison, 1989), and MrBayes (Ronquist et al., 2012) include built-in support for visualizing their output. Other packages such as PhyML (Guindon and Gascuel, 2003) and BEAST (Bouckaert et al., 2014) produce no graphical output but instead rely on specialized phylogenetic visualization tools such as FigTree (http://tree.bio.ed.ac.uk/software/figtree) and Dendroscope (Huson and Scornavacca, 2012) to interpret inference results.
There now exists a range of stand-alone phylogenetic visualization tools, too many to name here. (The PHYLIP home page provides an online list of such programs which currently contains 60 entries.) Despite existing solutions to the visualization problem being so numerous, the package IcyTree distinguishes itself in a number of important respects.
First, IcyTree is extremely easy to access. It is written entirely in JavaScript and runs in modern web browsers (compatibility with recent versions Google Chrome and Mozilla Firefox is assured) without needing additional plugins, meaning that it is loaded simply by navigating to its home page. This also means that it is never necessary to update IcyTree. Importantly, and unlike many of the existing JavaScript-based phylogenetics tools, IcyTree does not interact with servers in any way while running. This ensures that the program is as responsive as possible and means that users need not be concerned about the privacy implications of uploading data to an online service.
Second, the use of JavaScript combined with the SVG graphical format allows IcyTree to display trees containing thousands or even tens of thousands of taxa while remaining responsive. This also means that large files containing thousands of trees can be quickly loaded.
Third, IcyTree is very light-weight, focusing on drawing rooted phylogenetic time trees such as those inferred by Bayesian phylogenetic inference packages. This keeps the number of available options manageable. Along with the emphasis placed on making the program options accessible using a mouse or via an extensive repertoire of keyboard shortcuts, I feel that this makes IcyTree intuitive and easy to use, catering to new and seasoned users alike.
Finally, IcyTree is capable of viewing trees stored in a number of different formats, including Newick, NEXUS (Maddison et al., 1997) (as used by BEAST and MrBayes), PhyloXML (Han and Zmasek, 2009) and NeXML (Vos et al., 2012). Phylogenetic networks specified using the Extended Newick format (Cardona et al., 2008) are also supported. (The style used by IcyTree to render such networks is particularly suited to ancestral recombination graphs such as those inferred by Bacter (Vaughan et al., 2017).)

Basic use and capabilities
IcyTree is opened by navigating to its URL http://tgvaughan.github. io/icytree using either Mozilla Firefox or Google Chrome. (Chrome runs IcyTree noticeably faster than Firefox, but both browsers are supported.) Tree files can then be loaded by simply dragging and dropping them onto the IcyTree window, or by selecting File ! Open. (Newick strings can also be pasted directly into IcyTree by using File ! Enter tree directly.) Once a tree file is displayed, it can be easily explored using the pan-and-zoom interface: the mouse scroll wheel is used to zoom in or out of features under the mouse cursor, while the displayed area can be panned by clicking and dragging the mouse. (This is a similar interface to that provided by online map services.) In the instance that tree files contain multiple trees, the displayed tree can be changed using either the navigation box that appears in the bottomleft corner of the screen or via keyboard shortcuts.
Moving the mouse cursor over a tree edge displays a table containing information about that edge and the nodes that it connects. This includes the label of the child node, the age of the child and parent nodes, the length of the edge and the values of any additional annotations (Fig. 1a).
The Style menu contains a number of options which affect how the tree is displayed, such as changing what text is displayed on the tree, which annotations if any determine edge colour or opacity, whether reticulations are displayed, axis options, etc.
Figures produced by IcyTree can be exported directly as scalable SVG images via the File !Export !SVG menu item. Bitmap images can also be produced using the adjacent PNG and JPEG menu items.
All of IcyTree's features are described in an extensive usage manual which is available via the Help !Online Manual menu item.

Supported input formats
IcyTree can read tree files produced by popular phylogenetics packages such as MrBayes, BEAST and PhyML. These programs produce files in Newick and NEXUS formats, with the NEXUS format supporting the BEAST extensions which allow metadata (e.g. clade posterior support, ancestral traits, etc.) to be associated with each node/ edge in a tree. The support for Extended Newick is built into IcyTree at the lowest level, and allows IcyTree to not only read plain network descriptions but also NEXUS tree blocks containing annotated phylogenetic networks. These annotations are used by programs such as MASTER (Vaughan and Drummond, 2013) and Bacter (Vaughan et al., 2017) to represent ancestral trait information (Fig. 1b).
In addition, IcyTree can be used to view trees represented using the modern PhyloXML and NeXML formats, although support for these formats is currently limited to trees only.