Taxonomy Compilation &amp; Curation Within R
Authors: Barve Vijay 
Published: August 2021

Research projects in ecology or biodiversity either start with an area of study or a target species list. Working with these species lists or taxonomic lists is not as straightforward as it seems. The taxonomic names that are considered to be “standard,” are surprisingly dynamic. Over time, the names keep changing with ongoing research and advancements in taxonomy. Additionally, they undergo all sorts of reorganization, such as one species being split into multiple species and/or subspecies, the grouping of multiple species into a single species, and the reclassification of species from one genus to another. Compiling a consistent target species list can be very time consuming and tricky. However it is the initial step in most research projects and needs to be completed in order to continue the research.
Advancements in biodiversity informatics are helping simplify and automate some of these tasks. There are several web services that provide taxonomic data with either a taxonomic or a geographic focus. An increasing number of experts are opening access to their carefully curated taxonomic lists. Even with the help of these services, a lot of time needs to be spent to create a working list of names that can be linked to data such as Global Biodiversity Information Facility (GBIF) mediated occurrence data.
The package “taxotools” (Barve 2021) provides basic taxonomic list processing functions within the R programming environment (R Core Team 2021). Even though it is a work in progress, the functions available so far are applicable to diverse projects. The tools available can be categorized into the following broad areas:

Name manipulation: A set of helper functions to check scientific names with global name resolution services like Global Names Architecture (GNA) &amp; GBIF Name Parser, and to construct and deconstruct scientific names to and from components like genus, species and subspecific units.

Name matching: Matches names either with global name services or with user-created master taxonomy lists using fuzzy matching, testing combinations of genus level synonyms, subspecies elevation to species, trying to match with higher level taxonomic entities like genus and family, and employing a user-defined lookup table to manually resolve names.

List processing: Updates list fields such as unique identifiers (id), higher taxonomy and taxonomic ranks.

List matching: Compares user generated lists with each other and finds differences in the two lists, then prepares the lists for merging together to form a masterlist.

Format conversion: Converts taxolist to and from formats like HTML and Darwin Core (Wieczorek et al. 2021), which is useful in data exchange or checking the lists manually.

Name harvesting functions: Acquires additional names from Integrated Taxonomic Information System (ITIS) and Wikipedia (taxonomy infobox).

Name manipulation: A set of helper functions to check scientific names with global name resolution services like Global Names Architecture (GNA) &amp; GBIF Name Parser, and to construct and deconstruct scientific names to and from components like genus, species and subspecific units.
Name matching: Matches names either with global name services or with user-created master taxonomy lists using fuzzy matching, testing combinations of genus level synonyms, subspecies elevation to species, trying to match with higher level taxonomic entities like genus and family, and employing a user-defined lookup table to manually resolve names.
List processing: Updates list fields such as unique identifiers (id), higher taxonomy and taxonomic ranks.
List matching: Compares user generated lists with each other and finds differences in the two lists, then prepares the lists for merging together to form a masterlist.
Format conversion: Converts taxolist to and from formats like HTML and Darwin Core (Wieczorek et al. 2021), which is useful in data exchange or checking the lists manually.
Name harvesting functions: Acquires additional names from Integrated Taxonomic Information System (ITIS) and Wikipedia (taxonomy infobox).
Detailed function listings under each category are listed in Table 1.
This package has been effectively used in several biodiversity studies and projects like Map of Life, ButterflyNet, Terrestrial Parasite Tracker etc. It has been successfully tested on a masterlist constructed with ~1M names from World Flora Online and performs well.
The package is available on The Comprehensive R Archive Network (CRAN) [https://CRAN.R-project.org/package=taxotools] and the developmental release is on GitHub [https://github.com/vijaybarve/taxotools].