Software

I’m an author, developer, or major contributor to several pieces of software. Many of these are to do with scientific computing and scientific machine learning; in particular differential equation solvers. I am proudest of my work in the JAX ecosystem.

See also my GitHub page.

JAX

Equinox

For building neural networks (or in general any parameterised function). PyTorch-like API, fully compatible with native JAX, with no new concepts you have to learn.

Diffrax

An advanced suite of numerical differential equation solvers. Very efficient; features ODE/SDE/CDE solvers, high-order solvers, implicit solvers, dense solutions, adjoint methods, etc.

Lineax

Linear solvers and linear least squares, with fast compile times and efficient autodiff.

Optimistix

Root-finding, minimisation, nonlinear least squares, fixed points.

jaxtyping

Type annotations and runtime checking for shape and dtype of JAX arrays, and PyTrees.

sympy2jax

Build your physics-informed model in SymPy, perform arbitrary symbolic manipulations on it, then convert it to JAX and train it via gradient descent.

PyTorch

TorchTyping

Rich type annotations for a tensor’s shape, dtype, etc. Includes optional runtime type checking.

torchdiffeq

Ordinary differential equation (ODE) solvers.

torchsde

Stochastic differential equation (SDE) solvers.

torchcde

Controlled differential eqution (CDE) solvers. In particular useful for building Neural Controlled Differential Equations on time series.

sympytorch

Turn SymPy expressions into PyTorch modules and back again. Train your SymPy expressions by gradient descent.

torchcubicspline

Implements natural cubic splines.

Signatory

Differentiable computations of the signature and logsignature transforms. ICLR 2021 paper.

Julia

FromFile.jl

An improved import/include system for Julia. Makes your files self-contained and easier to understand.

Other

MkPosters

Write academic posters in Markdown, style them with CSS, save them to PDF. No wrestling with LaTeX.

Exvoker

A CLI tool. Extract regexes from stdout (e.g. URLs) and invoke commands on them (e.g. open the webpage).

typst_pyimage

Typst extension, adding support for generating figures using inline Python code.