hIPPYlib - Inverse Problem PYthon library

CI Doc Status status DOI

hIPPYlib implements state-of-the-art scalable adjoint-based algorithms for PDE-based deterministic and Bayesian inverse problems. It builds on FEniCS for the discretization of the PDE and on PETSc for scalable and efficient linear algebra operations and solvers.

Features

  • Friendly, compact, near-mathematical FEniCS notation to express, differentiate, and discretize the PDE forward model and likelihood function

  • Large scale optimization algorithms, such as globalized inexact Newton-CG method, to solve the inverse problem

  • Randomized algorithms for trace estimation, eigenvalues and singular values decomposition.

  • Scalable sampling of Gaussian random fields

  • Linearized Bayesian inversion with low-rank based representation of the posterior covariance

  • Hessian informed MCMC algorithms to explore the posterior distribution

  • Forward propagation of uncertainty capabilities using Monte Carlo and Taylor expansion control variates

See also our tutorial and list of related publications. For additional resources and tutorials please see the teaching material for the 2018 Gene Golub SIAM Summer School on Inverse Problems: Systematic Integration of Data with Models under Uncertainty available here.

The complete API reference is available here.

Latest Release

Contact

Developed by the hIPPYlib team at UT Austin, UC Merced, and WUSTL.

Slack channel

The hIPPYlib slack channel is a good resource to request and receive help with using hIPPYlib. Everyone is invited to read and take part in discussions. Discussions about development of new features in hIPPYlib also take place here. You can join our Slack community by filling in this form.

Please cite as

@article{VillaPetraGhattas21,
    author = {Villa, Umberto and Petra, Noemi and Ghattas, Omar},
    title = "{HIPPYlib: An Extensible Software Framework for Large-Scale Inverse Problems Governed by PDEs: Part I: Deterministic Inversion and Linearized Bayesian Inference}",
    year = {2021},
    issue_date = {March 2021},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    volume = {47},
    number = {2},
    issn = {0098-3500},
    url = {https://doi.org/10.1145/3428447},
    doi = {10.1145/3428447},
    journal = {ACM Trans. Math. Softw.},
    month = apr,
    articleno = {16},
    numpages = {34}
    }

@article{VillaPetraGhattas18,
title = "{hIPPYlib: an Extensible Software Framework for Large-scale Deterministic and Bayesian Inverse Problems}",
author = {Villa, U. and Petra, N. and Ghattas, O.},
journal = {Journal of Open Source Software},
volume = {3},
number = {30},
page = {940},
doi  = {10.21105/joss.00940},
year = {2018}
}

@article{VillaPetraGhattas16,
title = "{hIPPYlib: an Extensible Software Framework for Large-scale Deterministic and Bayesian Inverse Problems}",
author = {Villa, U. and Petra, N. and Ghattas, O.},
year = {2016},
url = {http://hippylib.github.io},
doi = {10.5281/zenodo.596931}
}