SPLITT: Serial and Parallel LIneage Traversal of Trees
SPLITT is a one-header C++ library that makes it easy to program pre-order and post-order traversal algorithms over tree-like data. The library is written in C++11. If OpenMP is enabled during compilation, SPLITT can take advantage of a multi-core CPU and/or vectorized instructions to execute the tree traversal in parallel.
The SPLITT.h file
The SPLITT library represents a C++ header file called “SPLITT.h”. Downloading the latest version of the file from github and including it in one or more of your C++ files is all you need to start using it. However, before you can do anything useful with SPLITT you will need to get familiar with some of its classes, i.e. its programming interface.
The SPLITT R-package
The R-package called with the same name (SPLITT) bundles the SPLITT.h header together with this documentation as well as some helper functions for creating R-packages using SPLITT. You will find it useful to install this package if you wish to create R-pacages that call SPLITT via Rcpp modules. This is explained in the Calling SPLITT from an R-package guide.
User guides and resources
The research article “Parallel Likelihood Calculation for Phylogenetic Comparative Models: the SPLITT C++ Library” introduces the library and reports a large-scale performance benchmark. The example application to the PMM model depicted on Fig. 1 in this article is used as a coding example in the SPLITT online documentation. The article is currently in peer review for a publication and is available as a preprint from BioRxiv.
- The SPLITT documentation is available from the SPLITT web page. The Get started guide provides a general introduction to the library and a roadmap throughout the documentation.
- The SPLITT source code is located in the SPLITT github
repository. This repository
contains the R-scripts and the data for the tests reported in (Mitov
and Stadler 2018). These can be found in the directory ‘tests’. Note
that the test data and results are stored in binary ‘.RData’ files
which are stored in github using the LFS system. Hence, executing a
regular command to clone the repository, e.g.
git clone https://github.com/venelin/SPLITT
will not download these data-files. Instead, the cloned repository will contain small text files of the same names, pointing to the real files in the LFS system. If you need to download the data-files, e.g. to reproduce the test-results, you need to install git LFS on your system. You can read how to do this in the documentation accessible from the git-lfs project page. - The classes of the SPLITT API are documented in the SPLITT Reference page.
- Feature requests, bugs, etc can be reported in the SPLITT issues list.
Citing SPLITT
To give credit to the SPLITT library in a publication, please cite the following article:
Mitov, V., & Stadler, T. (2018). Parallel Likelihood Calculation for Phylogenetic Comparative Models: the SPLITT C++ Library. bioRxiv,
Used R-packages
The SPLITT R-package uses the following 3rd party R-packages:
- For calling C++ from R: Rcpp v1.0.2 (Eddelbuettel et al. 2018);
- For tree processing in R: ape v5.3 (Paradis et al. 2018);
- For cloning and manipulating git repositories: git2r v0.26.1 (Csardi et al. 2018);
- For documentation and web-site generation: roxygen2 v6.1.1 (Wickham, Danenberg, and Eugster 2018), pkgdown v1.3.0 (Wickham and Hesselberth 2018);
Licence and copyright
Copyright 2017-2019 Venelin Mitov
Source code to SPLITT is made available under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at the user’s option) any later version. SPLITT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.