TransportMaps.jl
This is an implementation of triangular transport maps in Julia based on the description in [1]. For a comprehensive introduction to transport maps, see [2]. The theoretical foundations for monotone triangular transport maps are detailed in [1], [3]. For practical applications in structural health monitoring and Bayesian inference, see [4].
Authors
What are Transport Maps?
Transport maps are smooth, invertible functions that can transform one probability distribution into another [1]. The mathematical foundation builds on the Rosenblatt transformation [5] and the Knothe-Rosenblatt rearrangement [6]. They are particularly useful for:
Sampling: Generate samples from complex distributions by transforming samples from simple distributions
Variational inference: Approximate complex posterior distributions in Bayesian updating problems [4]
Density estimation: Learn the structure of complex probability distributions
Key Features
Polynomial Maps: Triangular polynomial transport maps
Adaptive Construction: Automatic selection of polynomial terms for efficient approximation
Multiple Rectifiers: Support for different activation functions (Softplus, ShiftedELU, Identity)
Quadrature Integration: Multiple quadrature schemes for map optimization
Optimization: Built-in optimization routines for fitting maps to target densities
Multithreaded evaluation for processing multiple points efficiently
Automatic Differentiation of target densities with
DifferentiationInterface.jl
Installation
using Pkg
Pkg.add("TransportMaps")Quick Start Example
For a comprehensive introduction, see the page Getting Started with TransportMaps.jl, which demonstrates:
Creating polynomial transport maps
Setting up quadrature schemes
Optimizing map parameters
Generating samples from the learned map
Additional examples are available in the Examples section:
- Banana: Map from Density
- Banana: Map from Samples
- Banana: Adaptive Transport Map from Samples
- Cubic: Adaptive Transport Map from Density
- Bayesian Inference: Biochemical Oxygen Demand (BOD) Example
Further, the following manuals discuss the technical details of the implementation:
- Basis Functions
- Choosing a Map Parameterization
- Quadrature Methods
- Optimization of the Map Coefficients
- Conditional Densities
- Adaptive Transport Maps
Package Architecture
The package is organized around several key components:
Map Components
PolynomialMapComponent: Individual polynomial components of triangular mapswith different polynomial bases:
HermiteBasis: Probabilists' Hermite polynomial basisLinearizedHermiteBasis: Linearized Hermite basis for improved conditioningCubicSplineHermiteBasis: Cubic spline basis with Hermite supportGaussianWeightedHermiteBasis: Hermite basis with Gaussian weighting
Transport Maps
PolynomialMap: Main triangular polynomial transport mapDiagonalMap: Convenience constructor for diagonal maps (no cross-terms)NoMixedMap: Maps without mixed polynomial termsLinearMap: Linear standardization map (mean/std)LaplaceMap: Laplace approximation-based mapComposedMap: Composition of linear and polynomial maps
Rectifier Functions
IdentityRectifier: No transformation (linear)Softplus: Smooth positive transformation (log-sum-exp)ShiftedELU: Exponential linear unit variantExpRectifier: Pure exponential transformation
Quadrature Schemes
GaussHermiteWeights: Gauss-Hermite quadrature points and weightsMonteCarloWeights: Monte Carlo integrationLatinHypercubeWeights: Latin hypercube samplingSparseSmolyakWeights: Sparse grid quadrature for higher dimensions
Map Optimization
optimize!: Optimize map coefficients to minimize KL divergenceoptimize_adaptive_transportmap: Adaptive refinement for map from samplesoptimize_adaptive_transportmapcomponent: Adaptive refinement for map from density
Conditional Densities
conditional_density: Compute conditional densities π(xₖ | x₁, ..., xₖ₋₁)conditional_sample: Sample from conditional distributionsmultivariate_conditional_density: Multivariate conditional densitiesmultivariate_conditional_sample: Multivariate conditional sampling
API Reference
Related Implementation
TransportBasedInference.jl: Julia implementation of adaptive transport maps (ATM) and Kalman filters
SequentialMeasureTransport.jl: Julia implementation of transport maps from sum-of-squares densities [8]
Triangular-Transport-Toolbox: Python code for the triangular transport tutorial paper [2]