code
The below code are snippets of various projects I have worked on over the past couple years. These are all open source, so check them out on my GitHub.
Actively maintained
These are projects that I actively maintain and use day-to-day:
- predictsr is an R package to load the PREDICTS database into R dataframes. It is actively maintained and used in the Biodiversity Futures Lab at the Natural History Museum.
- dotfiles for *nix systems that I use day-to-day. I use yadm to manage these files across all the systems I use (e.g., work laptop, HPC). Includes configurations for
zsh,tmux,neovim, and more.
Research software
These are research software projects that I have worked on in the past:
- statFEM code to accompany these papers (FEM code is implemented with FEniCS):
- The 1D case (including the internal wave experimental data) is housed at statkdv-paper. This code computes the posterior (filtering) distribution using extended and ensemble Kalman filters.
- The 2D case is located here. This also computes the posterior filtering distribution using a low-rank extended Kalman filter algorithm.
- ula-statfem: code to explore Langevin dynamics samplers with statFEM. Published in SIAM JUQ. Includes sfmcmc package which implements a bunch of different MCMC samplers, including ULA (see this classic paper), MALA, and preconditioned Crank-Nicolson.
- statfenics: a set of tools to help when doing statistics with FEniCS. Includes functions to build Gaussian process inference on top of FEniCS, and utilities to aid in interpolating finite element solutions.
C++
These are some toy projects that I’ve used to learn about C++ and its tooling:
- uLinalg: a library to handle 2D array operations, including broadcasting, LU decompositions, and Cholesky decompositions. A bit like a mini version of numpy.
- pspectral: a library to compute pseudospectral solutions to differential equations, such as Navier-Stokes, using Fourier transforms (FFTW).
- punter: an implementation of the Shunting-Yard to parse mathematical expressions from infix to postfix notation.