Basis Function Expansions

Basis Function Expansions, or BFE, are the technical engine that powers much of my science. The most powerful tool to this end is EXP (pronounced 'E-X-P'), short for EXPANSION, a C++/CUDA code I develop with Martin Weinberg. During my PhD thesis I joined in the development, leading to the public release of the software. The theory behind the code is described primarily in this paper. We are still actively developing the code -- please take a look at EXP on GitHub!

Project Overview

Basis Function Expansions (BFEs) are a powerful tool to represent distributions. I most often use them to characterise 3d density fields from sets of points (particles), but that isn't where BFE stop! One can also use them for 2d distributions, or for non-density quantities. I'm actively working on their technical development, please reach out if you are interested! At present we have developed 2d basis function applications to look at lopsided galaxies through cosmic time, as well as robustly measuring inclinations for a large sample of well-imaged galaxies.


The main software

The EXP software is fully public, and has extensive documentation on its own site. The code itself is hosted on GitHub.


Examples of how to use the N-body side of EXP live in a separate repository on GitHub, while examples of how to use EXP for analysis of existing simulations lives in another repository.

Auxiliary software

A modestly updated spherical basis tutorial is available here. Additionally, this file has a simplified version of the stars in the Naidu et al. (2021) GSE model.


A pedagogical approach to multichannel singular spectral analysis (MSSA) may be found here, along with a data file.


I maintain a set of tools for galactic dynamics that are built on basis function expansions: exptool.


I maintain a header-only C++ library that supports simple basis function utilities: sphexpansion.