phyloXML
phyloXML is an XML application for describing, exchanging, and storing phylogenetic trees (and, to a limited degree, networks) together with the rich biological annotation attached to their nodes and branches. It was developed by Mira V. Han and Christian M. Zmasek and formally published in 2009 (BMC Bioinformatics), with its structure defined by a versioned XML Schema Definition (XSD) hosted at phyloxml.org. Files use the extension .phyloxml and the MIME type text/x-phyloxml+xml. The format was created to overcome the annotation limitations of older tree formats such as Newick and its Nexus container Nexus, whose ad-hoc extensions (like the NHX comment convention) could not portably carry taxonomic, molecular, and evolutionary metadata.
Structurally a phyloXML document has a single root <phyloxml> element containing one or more <phylogeny> elements. Each phylogeny carries a required rooted attribute (and an optional rerootable flag guarding root-dependent data such as gene duplications), and its topology is built from <clade> elements nested recursively: every clade is a node, and clades meeting at the root constitute the tree. Branch lengths may be given as either a child element or a terse attribute. Because annotation lives inside the tree hierarchy, a clade can directly enclose typed sub-elements including taxonomy, sequence, confidence (bootstrap or posterior values), events (speciation, duplication, gene loss), distribution (geographic data), date, reference, and property.
The <property> element, addressed via a ref attribute using CURIE-style ontology references, is the sanctioned extension mechanism for data not covered by the schema; general XML namespacing also lets other XML vocabularies be embedded. This design contrasts with NeXML, which tabulates node metadata separately from topology (helpful for statistical/character-matrix workflows), whereas phyloXML keeps everything tree-local and thus simpler to parse for tree-centric tasks.
In the graph-data and conversion landscape phyloXML is a specialized, tree-shaped serialization rather than a general graph format, so it interoperates poorly with generic graph tools; conversion usually flows through phylogenetics libraries. It is well supported by Zmasek's Archaeopteryx viewer, the forester library, and Biopython's Bio.Phylo module (plus BioPerl and BioRuby), and tools such as ete3 can read and write it. Its main strengths are standardized, validated, extensible annotation and broad software support; its trade-offs are XML verbosity and larger files than compact formats like Newick, and it is oriented to trees rather than arbitrary networks.
| Feature | phyloXML |
|---|---|
| Multiple Graphs per Document | |
| Nodes | |
| Undirected Edges | |
| Directed Edges | |
| Hyperedges | |
| Mixed-directionality Edges | |
| Parallel Edges | |
| Self-loops | |
| Edges on Edges | |
| Nested Graphs in Nodes | |
| Nested Graphs in Edges | |
| Nested Graphs in Graphs | |
| Node Labels | |
| Edge Labels | |
| Attributes on Nodes | |
| Attributes on Edges | |
| Attributes on Graphs | |
| Typed Edges | |
Tools(Read & Write)
Read-only Tools
Frequently Asked Questions
What is a phyloXML file?
A phyloXML file stores a graph — its nodes, edges and attributes — in the phyloXML format. See the feature table above for what it supports.
How do I open a phyloXML file?
Open it in a graph tool that supports phyloXML, or convert it to a format your tool reads. With GraphInOut you can convert phyloXML to GraphML, DOT, Connected JSON and more, right in your browser.
How do I convert a phyloXML file to another format?
Use the Convert from phyloXML link above: upload or paste your phyloXML file (input preset to phyloXML), choose a target format and download the result — free, no install.
