TOOL
ete3 logo

ete3

ETE Toolkit (ete3)

ETE (Environment for Tree Exploration) is a Python framework for building, comparing, annotating, manipulating and visualizing trees, with a strong emphasis on phylogenetics and comparative genomics. It was created by Jaime Huerta-Cepas, François Serra and Peer Bork; the first release appeared in 2010, the widely cited ETE 3 in 2016 (Mol. Biol. Evol.), and the current line is ETE 4 (Release 4.4.0, September 2025), which rewrote performance-critical internals in Cython and replaced the old PyQt viewer with a browser-based interface served via Bottle/Cheroot.

The core data model represents a tree as a set of connected node objects (the Tree / TreeNode classes), where every node is itself a subtree root. Nodes carry a name, branch length (distance to parent) and support value, plus arbitrary user features attached as Python attributes. This makes ETE a programmatic environment rather than a file format: users load a tree, then traverse, search, prune, root, collapse, or annotate it through a comprehensive API, and compute topological comparisons such as Robinson-Foulds distances.

For interchange ETE reads and writes the Newick format (Newick) and its New Hampshire eXtended variant (NHX), which embeds key-value node annotations inline; Nexus (Nexus) is also supported, and the broader toolkit historically handles phyloXML (phyloXML) and NeXML (NeXML) alongside multiple-sequence alignments. Because Newick and NHX are ETE's native serialization, it interoperates naturally with other phylogenetics software and with converters and libraries in the same ecosystem, such as biopython (Biopython), the Newick-oriented treegraph (TreeGraph 2), and downstream visualizers like newick-to-graphml (newick_to_graphml).

Beyond I/O, ETE integrates the NCBI taxonomy and GTDB databases for taxonomic annotation, offers phylogenomic utilities (orthology inference, gene- and species-tree reconstruction, evolutionary model testing), and produces publication-quality, programmatically styled figures with Jupyter integration and adaptive zooming for very large trees; command-line tools (e.g. ete4 explore) expose much of this without scripting.

Its strengths are a mature, well-documented API, fine-grained rendering control, and deep phylogenetic tooling. Limitations follow from its scope: ETE models rooted or unrooted trees, not general graphs (no cycles or arbitrary directed relations), it is Python-only, and NHX annotations are not standardized across tools, so round-tripping rich metadata to non-ETE software can be lossy.

Graph Formats(Input & Output)

Frequently Asked Questions

What graph file formats does ete3 support?

See the list on this page — it shows every format ete3 can read, write and display.

How do I import a graph into ete3?

Convert your file to a format ete3 can read, then open it in ete3. Use GraphInOut to get a ete3-compatible file in seconds.

How do I convert a file so ete3 can open it?

Use the convert links above — upload or paste your graph, pick a format ete3 accepts and download the result, right in your browser.