# 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

##### 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.

##### 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.

##### 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.

##### jaxtyping

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

## 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.