RNeXML: A package for reading and writing richly annotated phylogenetic, character and trait data in R
Published Web Locationhttps://doi.org/10.1111/2041-210X.12469
NeXML is a powerful and extensible exchange standard recently proposed to better meet the expanding needs for phylogenetic data and metadata sharing. Here we present the RNeXML package, which provides users of the r programming language with easy-to-use tools for reading and writing NeXML documents, including rich metadata, in a way that interfaces seamlessly with the extensive library of phylogenetic tools already available in the r ecosystem. Wherever possible, we designed RNeXML to map NeXML document contents, whose arrangement is influenced by the format's XML Schema definition, to their most intuitive or useful representation in r. To make NeXML's powerful facility for recording semantically rich machine-readable metadata accessible to r users, we designed a functional programming interface to it that hides the semantic web standards leveraged by NeXML from r users who are unfamiliar with them. RNeXML can read any NeXML document that validates, and it generates valid NeXML documents from phylogeny and character data in various r representations in use. The metadata programming interface at a basic level aids fulfilling data documentation best practices, and at an advanced level preserves NeXML's nearly limitless extensibility, for which we provide a fully working demonstration. Furthermore, to lower the barriers to sharing well-documented phylogenetic data, RNeXML has started to integrate with taxonomic metadata augmentation services on the web, and with online repositories for data archiving. RNeXML allows r's rich ecosystem to read and write data in the NeXML format through an interface that is no more involved than reading or writing data from other, less powerful data formats. It also provides an interface designed to feel familiar to r programmers and to be consistent with recommended practices for r package development, yet that retains the full power for users to add their own custom data and metadata to the phylogenies they work with, without introducing potentially incompatible changes to the exchange standard.