Bio::NEXUS: a Perl API for the NEXUS format for comparative biological data
- Equal contributors
1 Center for Advanced Research in Biotechnology, 9600 Gudelsky Drive, Rockville, MD 20850, USA
2 Section of Integrative Biology, University of Texas at Austin, 1 University Station C0930, Austin, Texas 78712, USA
3 Cold Spring Harbor Laboratory, 1 Bungtown Rd, Cold Spring Harbor, NY 11724, USA
4 Department of Biological Sciences, Hunter College, CUNY, 695 Park Ave., New York, NY 10021, USA
5 Biochemical Science Division, National Institute of Standards and Technology, Gaithersburg, MD 20899-8310, USA
BMC Bioinformatics 2007, 8:191 doi:10.1186/1471-2105-8-191Published: 8 June 2007
Evolutionary analysis provides a formal framework for comparative analysis of genomic and other data. In evolutionary analysis, observed data are treated as the terminal states of characters that have evolved (via transitions between states) along the branches of a tree. The NEXUS standard of Maddison, et al. (1997; Syst. Biol. 46: 590–621) provides a portable, expressive and flexible text format for representing character-state data and trees. However, due to its complexity, NEXUS is not well supported by software and is not easily accessible to bioinformatics users and developers.
Bio::NEXUS is an application programming interface (API) implemented in Perl, available from CPAN and SourceForge. The 22 Bio::NEXUS modules define 351 methods in 4229 lines of code, with 2706 lines of POD (Plain Old Documentation). Bio::NEXUS provides an object-oriented interface to reading, writing and manipulating the contents of NEXUS files. It closely follows the extensive explanation of the NEXUS format provided by Maddison et al., supplemented with a few extensions such as support for the NHX (New Hampshire Extended) tree format.
In spite of some limitations owing to the complexity of NEXUS files and the lack of a formal grammar, NEXUS will continue to be useful for years to come. Bio::NEXUS provides a user-friendly API for NEXUS supplemented with an extensive set of methods for manipulations such as re-rooting trees and selecting subsets of data. Bio::NEXUS can be used as glue code for connecting existing software that uses NEXUS, or as a framework for new applications.