Background

Most analysis programs for inferring molecular phylogenies are difficult to use, in particular for researchers with little programming experience.

Results

TREEFINDER is an easy-to-use integrative platform-independent analysis environment for molecular phylogenetics. In this paper the main features of TREEFINDER (version of April 2004) are described. TREEFINDER is written in ANSI C and Java and implements powerful statistical approaches for inferring gene tree and related analyzes. In addition, it provides a user-friendly graphical interface and a phylogenetic programming language.

Conclusions

TREEFINDER is a versatile framework for analyzing phylogenetic data across different platforms that is suited both for exploratory as well as advanced studies.

Computational inference of molecular phylogenies has a wide spectrum of applications in the analysis of DNA sequences, ranging from systematic biology to population genetics and comparative genomics [1].

As a result, a large body of theoretical methodology has developed [2], along with numerous specialist software packages. However, often the most advanced of these computer programs typically provide only a very Spartan user interface and hence are too difficult to use without additional training, especially for novices in phylogeny. One notable exception is the popular commercially distributed PAUP* software [3] that implements both powerful probabilistic methods for modeling and inferring gene trees and at the same time offers a friendly graphical user interface (GUI). Unfortunately, this GUI is currently available only on the Macintosh platform.

On the other hand, a more experienced user will quickly outgrow the limits of a graphical user interface. Consequently, to facilitate complex sequence analysis corresponding scripting languages have been developed. For example, in PAUP* all elements of its GUI can also be invoked on the command line. However, for the rapid deployment of specialized phylogenetic analysis tools one still needs the additional flexibility of a programming rather than scripting language.

Therefore, in an integrative general-purpose phylogenetic analysis environment ideally several complementary objectives are taken into account:

platform independence and modular design,

an easy-to-use GUI which masks the complexity of tree inference from the non-expert user,

a phylogenetic computer language that allows both scripting of all GUI functions as well as generic programming, and

availability of powerful tree inference and related analysis approaches, and means for simulation of data and trees.

The development of the TREEFINDER software is an attempt to address these issues to provide a unified powerful framework for phylogenetic analysis for both occasional and experienced users across different platforms.

Implementation

General design

The TREEFINDER software has a modular design. It consists of a graphical frontend (written in Java) and computational kernel (written in ANSI C). Both communicate in the special-purpose language TL ("TREEFINDER's language"). The frontend translates mouse clicks and keyboard hits into TL commands that are sent to the kernel. The kernel evaluates these commands and sends the results back to the window interface, where they are displayed.

TREEFINDER has grown into a fairly large project. The current version as of this writing (April 2004) consists of approximately 30,000 lines of C code, 9,000 lines of Java and 2,500 lines of TL. TREEFINDER is portable to any operating system where an ANSI C compiler and a Java virtual machine is available.

TREEFINDER components and language

The Java frontend provides a tree and postscript viewer, a text editor, a graphical user interface for common tasks in phylogenetic analysis, and a command line terminal to enter TL commands (see Figures 1,2,3,4). The graphical user interface makes the use of TREEFINDER very intuitive. Data files and reconstruction parameters can be chosen interactively, and the tree viewer also offers basic tree rearrangement functionality.

Figure 1

A typical screenshot of an analysis with TREEFINDER: a tree viewing window showing an inferred maximum-likelihood tree.

The graphical user interface for tree reconstruction showing the corresponding methods and options available in TREEFINDER.

Figure 4

TREEFINDER's command line terminal, ready for entering TL commands.

The kernel performs the actual analysis. For an overview of the currently implemented phylogenetic procedures and algorithms see section "Results" below. In addition to these specialized tasks, the kernel implements many other general mathematical and statistical functions, including pdf, cdf, and quantile functions of common statistical distributions and most functions from the public-domain CEPHES library [4]. It is also possible to run the kernel without the graphical frontend. In this case TL commands may simply be typed in at the operating system shell prompt or may be read from a text file.

The computer language TL developed for use with TREEFINDER is a functional language, similar to LISP and Mathematica. This makes TL ideally suited to the processing of lists and trees. The language is interpreted and provides all the common programming elements like flow control, variables, operator notations and a huge set of basic routines. It supports stack orientated programming as well as rule-based data transformations. The TL language is extensively documented in the TREEFINDER software package.

Note that the clear separation of kernel and fron-tend and the use of the TL language for communication between the two components greatly facilities the writing of third-party plug-ins to extend the capabilities of the kernel. Correspondingly, a substantial part of the computational library of TREEFINDER is itself written in TL.

Available phylogenetic methods

The phylogenetic analysis procedures currently implemented in TREEFINDER focus mainly on probabilistic and statistical approaches. One important reason for this choice is that these methods consistently provide the most powerful and accurate inferences [2]. The following is a non-exhaustive list of features present in the TREEFINDER version of April 2004.

Substitution models

The program offers the standard set of evolutionary models for nucleotide substitution (GTR and sub-models [5–7]) and two different models of rate heterogeneity among sites (Gamma [8], different rates for each codon position). All model parameters including the rate heterogeneity and base frequencies can be estimated from the data.

Estimation of branch lengths and absolute rates

Branch lengths estimates are obtained by the method of maximum-likelihood [9], with the optional application of a clock constraint. In addition, absolute evolutionary rates can be assigned to each edge and a corresponding calibration of the tree nodes in time can be obtained using the method of non-parametric rate smoothing [10]. TREEFINDER also allows to plot the resulting rato- and chronograms (see Figure 5).

Figure 5

An example for an inferred chronogram computed by TREEFINDER using non-parametric rate smoothing [10].

Tree topology search

TREEFINDER employs a genetic algorithm for the search of the optimal most-likely tree topology [11]. Genetic algorithms are global search procedures, and are, unlike local rearrangement methods, less prone to get trapped in local maxima. The specific details of the genetic algorithm implemented in TREEFINDER are explained in the manual. In addition to exploring the whole tree space, the tree search may also be constrained by a guide tree (a tree whose multifurcations represent the remaining degree of freedom in the search space). To speed up the evaluation of the likelihood for different tree topologies a technique called "likelihood hashing" is employed.

Tree manipulation

The tree viewer build into TREEFINDER allows to open trees in various data formats and provides access to basic rearrangement capabilities, such as re-rooting, midpoint rooting, placing outgroups, and collapsing of small edges. The transformations may also be applied simultaneously to whole sets of trees. More advanced tree manipulation is available through the TL programming interface. For instance, comparison of trees and other expressions is straightforward in TL due to its functional nature.

Simulation of data and trees

A method to simulate sequence data along a specified gene tree and model of nucleotide substitution is implemented [12]. In addition, a simple procedure to generate random bifurcated trees is available. Simulation of trees and data is useful to assess the accuracy of phylogenetic methods and to generate empirical distributions for test statistics [13, 14].

Rate profiles

The computation of rate and mutation profiles [15] along sequence alignments is implemented in TREEFINDER. These plots are useful in the inference of functional regions and in investigating the selective forces acting on DNA sequences.

Other features

The confidence of inferred evolutionary relationships may be assessed by bootstrap analysis [16]. Corresponding routines for computing consensus trees [17] with the option to count and output the distinct topologies in the set of samples are available. Further TL procedures include checks for compositional bias in the data and functions for reading, writing and manipulating sequence alignments.

User interface and TL language

A major design goal of TREEFINDER is to provide both a simple and easy-to-use graphical user interface as well as a corresponding powerful programming language for phylogenetic analysis.

Figures 1,2,3,4 give an impression of the graphical user interface for typical standard tasks: tree viewing (Figure 1), editing alignments (Figure 2), reconstructing trees (Figure 3), and the TL shell to enter commands (Figure 4). Examples for the inference of a chronogram [10] and the plot of a rate pro-file [15] are shown in Figures 5 and 6. Most GUI interface elements will be self-explanatory, but a detailed description of each button etc. is available in the TREEFINDER manual.

Figure 6

An example for a rate profile, i.e. relative evolutionary rates along an alignment as computed by TREEFINDER.

All analyzes can be done also on the command line or script level. For instance, to reconstruct a phylogenetic tree from a sequence alignment contained in some "file" one enters the following simple command:

ReconstructPhylogeny ["file",

SubstitutionModel->"HKY"].

In this case, "SubstitutionModel" is a named optional argument (that takes a default value and hence need not to be specified) whereas "file" is a required positional argument.

A noteworthy detail about TL is that a programmer can choose at any time between functional and stack-orientated calls. The stack-orientated form of the above command is:

"file",

SubstitutionModel->"HKY",

ReconstructPhylogeny

A phylogenetic tree in TL is an object of the form

{{"a",{"b","c"}},"d",{"e","f"}}

and with edge lengths

(*) {{"a":0.15,{"b":0.1,"c":0.1}

:0.001}:0.1, "d":0.2,

{"e":0.1,"f":0.1}:0.001}.

The structure of the nested list represent the topology, as in the familiar NEWICK bracket notation for phylogenetic trees. However, the above examples are not merely a data format to store tree information in files. They are genuine TL expressions, and as such may be subjected to further transformations. For instance, if you have a "treelist" variable with value

One of TL's most advanced features is rule-based data transformation. Given a variable 'tree' containing a tree with edge lengths, it requires less than one line of code to collapse the short edges into multi-furcations:

This pattern matching property is heavily relied on in TREEFINDER's internal TL kernel routines, but it may also prove useful for writing extension.

These are only some illustrative examples of TL programming. Further code examples can be found in the TL documentation and in the 'Kernel' directory of the TREEFINDER distribution.

Relative speed and accuracy

The algorithms implemented in TREEFINDER have been tested and cross-compared with those of other likelihood-based phylogeny softwares, such as PAUP* [3], PHYLIP [18], fastDNAml [19], and TREE-PUZZLE [20].

Specifically, we conducted a simulation study to investigate the computation time, the accuracy (=probability to recover the exact true tree topology), and the expected dissimilarity of true and inferred tree [21] for several widely used programs and TREEFINDER. Varying the number of taxa between 4–60 we generated a set of random trees. Subsequently, sequence data of length 1,000 nucleotides were artificially evolved along these trees. The resulting alignments were then used to infer the original trees by the using TREEFINDER (version of April 2004), PAUP* (version 4b10), TREE-PUZZLE (version 5.1) and fastDNAml (version 1.2.2). For each tree size (4–60 leafs) this procedure was repeated 100 times to assess the average relative performance of each program.

The results from our simulations are summarized in Figure 7. Essentially, it turns out that the accuracy of TREEFINDER with regard to correctly inferring tree topologies and estimating branch lengths is comparable to that of other likelihood programs such as PAUP* and fastDNAML that are often used as "gold standards". However, in terms of speed the TREEFINDER program drastically outperformed all investigated programs, in particular for large trees containing more than 30 sequences.

Figure 7

Comparison of computation times, accuracy and performance of three widely-used likelihood tree reconstruction programs with TREEFINDER.

Future work

The TREEFINDER environment, while being an versatile analysis framework already in the present version, has many options for further enhancement. This includes, most importantly, substitution models for amino acids, e.g., the classic Dayhoff model [22] or the more recent WAG model [23]. Other desirable directions for extension are the implementation of modern population genetic methods, such as tools for coalescent simulation and estimation of demographic parameters [24]. These, and other procedures, are scheduled for inclusions in future releases of TREEFINDER.

The TREEFINDER project is an ongoing effort in providing an easy-to-use and yet powerful platform-independent analysis environment for molecular phylogenetics. Currently, it offers a solid set of well-tested statistical methods to infer gene trees and for related analyzes, with its functional programming interface providing an extra amount of flex-ibility. This article presents the current status of TREEFINDER as of version April 2004. With a release cycle of 3–4 updates per year, as in 2003, we expect that TREEFINDER will soon further mature and provide especially for beginners a convenient and quick route to phylogenetic analysis.

The TREEFINDER analysis environment can be downloaded free of charge from the web page http://www.treefinder.de. Packages are currently provided for the Windows, MacOS X, SUN Solaris, and Intel Linux platforms. TREEFINDER requires the prior installation of a Java virtual machine (preferably version 1.4 or later). The TREEFINDER software is provided "as is" with no guarantee or warranty of any kind. It may be distributed non-commercially, provided that neither its manual or any other components of the software are changed (for details refer to the web page or the manual).

The editors of BMC Evolutionary Biology retract this article due to the decision by the corresponding author, Gangolf Jobb, to change the license to the software described in the article. The software is no longer available to all scientists wishing to use it in certain territories. This breaches the journal's editorial policy on software availability which has been in effect since the time of publication. The other authors of the article, Arndt von Haeseler and Korbinian Strimmer, have no control over the licensing of the software and support the retraction of this article.

Acknowledgements

Development of TREEFINDER was in part supported by grants from the Deutsche Forschungsgemeinschaft and the Max Planck Gesellschaft to A.v.H. and K.S. We also thank Wolfgang Ludwig (TU Munich) for many valuable suggestions that greatly helped the TREEFINDER project.

Authors' original submitted files for images

Below are the links to the authors’ original submitted files for images.

Authors contributions

G.J. initiated the TREEFINDER project in 1997. He is the principal designer and programmer of TREEFINDER. A.v.H. and K.S. contributed ideas and suggestions for improving TREEFINDER and supervised the project while G.J. worked in their respective research groups. G.J. and K.S. prepared the manuscript.

This article is published under license to BioMed Central Ltd. This is an Open Access article: verbatim copying and redistribution of this article are permitted in all media for any purpose, provided this notice is preserved along with the article's original URL.