Software
NOTE: this page became out of date as soon as I started
working full time as a research software engineer; I need to
curate my list again, but now that I'm developing software
fulltime there's a lot more things that aren't in here - see
my
github profile for
more information (though even then, there's quite a bit in
various organisational accounts...)
Almost all of the software below are R packages. I write
software for several reasons:
Research outputs designed for resuse
-
diversitree:
Comparative phylogenetic analyses of diversification in R.
A very broad collection of tools for fitting evolutionary
models to phylogenetic trees
-
arbutus:
Assessing the adequacy of phylogenetic models of
quantitative trait evolution (with Matt Pennell).
-
TRAMPR:
TRFLP Analysis and Matching Package for R. Matches
profiles from a (now-dated) sequencing technology against
a known set of species.
-
phyndr:
Match phylogenetic and trait data (paper forthcoming).
-
plant:
Simulation model of a forests for exploring trait-driven
ecological and evolutionary dynamics.
-
traitfill:
Impute categorical missing data based on taxonomic
structure.
Research infrastructure and tools
-
remake:
reproducible build system for R. This package takes the
good ideas from "make" and reimagines them with data
analysis in R in mind.
-
rrqueue:
Scalable distributed job queues with R and Redis. Based
on ideas from rq but
with an R-ish flavour.
-
storr:
Key-value databases, with different backends (memory,
disk, Redis). Includes support for memory caching,
content-addressable lookup, indexable serialisation, and
fetching externally stored data on demand.
-
RedisAPI:
Automatically generated consistent wrapper around all
Redis commands.
-
RedisHeartbeat:
Heartbeat pattern, using Redis: signal that an R process
is alive by using an expiring key as a dead man switch.
RedisHeartbeat runs on a separate thread so does not block
any R calculations.
-
rrlite:
Interface to rlite: a
self-contained, serverless, zero-configuration,
transactional redis-compatible database engine (rlite is
to Redis what SQLite is to mysql).
-
RcppR6:
Generate interfaces to C++ classes using R6. Allows
compiled objects to be interacted with dynamically in R as
reference (R6) classes. Includes support for mapping C++
templated types onto R's generic (S3) type system.
-
dockertest:
Generate dockerfiles and containers from R package
metadata, remake files or from minimal yaml
configuration. Allows offline rapid testing of packages
in a clean environment.
-
callr:
Simple R -> shell and shell -> R calling. Run R by
writing small json files. Automatically install missing
packages, even from github. Run shell with output only on
error.
-
experimentr:
Control large computational experiments on multiprocessor
machines or on HPC infrastructure.
-
drat.builder:
Tools to help keep a drat
repository up to date.
-
jqr: R
interface to jq, for
manipulating JSON data. Includes a pipe-based DSL.
-
sowsear:
Frictionless literate programming: generate knitr files from
R scripts. Using this means you are always writing
literate programs.
-
rodeint:
An R interface to Boost.odeint.
This interface wraps almost all of the functionality of
odeint into a consistent and simple interface (8
functions!), and allows integration of ODE systems in R or
compiled code.
Documenting research
-
ksi:
Komogorov-Smirnov Importance Statistic
-
mosaic:
Fit non-monotonic curves to hybrid zone data.
Distributing and versioning of data
-
taxonlookup:
curated higher-level taxonomy for land plants.
-
baad.data:
Biomass And Allometry Database (the actual database is baad).
Fun things
Other contributions
-
geiger:
a suite of methods and models for studying evolutionary
radiations.
-
cowsay: cowsay
with more animals in R.
-
docdbi:
generic interface for nosql database in R.