Software and Tools

Triangular Transport Toolbox

Triangular transport is a powerful tool for generative modelling, density estimation, and Bayesian inference. Transport methods seek a transformation between an often non-Gaussian target density π, the object of interest, and a much simpler, user-specified reference density function η, often a standard Gaussian distribution.

Once such a map has been found, we can use to not just generate new realizations of the target density function π, but also any of its conditional distributions. This latter property makes triangular transport extremely useful for Bayesian inference: If the target density is the joint distribution of prior and likelihood, then the posterior is just one such conditional distribution.

This Python toolbox includes the tools to construct, optimize, and utilize a wide range of different triangular map variations. I have also included example files which demonstrate its use in various settings. Some of my past introduction videos to triangular transport can be found here and here.

Illustration of a forward application of a transport map (target π → reference η) and its inverse (reference η → target π). The inverse map can also trasnsform conditional samples of the reference into conditional samples of the target, which is an extremely useful operation in Bayesian inference.
Interactive element. Analytic Element Model with a finite no-flow boundary, extraction well, and injection well (light blue control points) against a Möbius background flow (dark blue control points). The contours correspond to hydraulic potential or hydraulic head. Drag the elements around to see how the solution changes in response. The transparent Möbius flow control point is defined by the other three control points. Interactivity does not work for touch devices.

A Simple Analytic Element Toolbox

The Analytic Element Method (AEM) is an exotic groundwater modelling technique. Where numerical approaches require a grid to assemble a solution in small spatial increments, AEM does not rely on computing a grid of local solutions. Instead, this method constructs the full, global solution to the flow equations through super-position of analytic elements which project their influence over the entire flow domain.

The advantages of this are two-fold: First, this makes the method highly computationally efficient (In fact, efficient enough to implement it as a browser-based interactive widget, explore the interactive example to the left). Second, the method does not require enclosure through finite boundaries. Such boundaries are a computational necessity for numerical models, but rarely exist in reality. AEM allows us to induce regional flow without such rigid boundaries.

Both properties make AEM extremely well-suited for uncertainty estimation. To facilitate this better (and, frankly, personal curiosity), I have created a Python toolbox which implements a basic AEM routine and provides an in-built Markov Chain Monte Carlo (MCMC) algorithm. My hope is that this toolbox will allow hydrogeologists less familiar with Bayesian statistics (or other environmental scientists unfamiliar with hydrogeological modelling) to incorporate basic groundwater flow uncertainty estimates into their work. This toolbox has a corresponding publication.