hIPPYlib

hIPPYlib: An Extensible Software Framework for Large-Scale Inverse Problems - Published in JOSS (2018)

https://github.com/hippylib/hippylib

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    4 of 15 committers (26.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 4 months ago · JSON representation ·

Repository

An Extensible Software Framework for Large-Scale Inverse Problems

Basic Info
  • Host: GitHub
  • Owner: hippylib
  • License: gpl-2.0
  • Language: Jupyter Notebook
  • Default Branch: master
  • Homepage: https://hippylib.github.io
  • Size: 2.63 MB
Statistics
  • Stars: 146
  • Watchers: 14
  • Forks: 48
  • Open Issues: 5
  • Releases: 17
Created over 9 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

CI Doc Status status DOI

              Inverse Problem PYthon library

```


/ | / |/ \ / \ / \ / |/ |/ |/ |
$$ |____ $$$$$$/ $$$$$$$ |$$$$$$$ |$$ \ /$$/ $$ |$$/ $$ |____
$$ \ $$ | $$ |$$ |$$ |$$ | $$ \/$$/ $$ |/ |$$ \ $$$$$$$ | $$ | $$ $$/ $$ $$/ $$ $$/ $$ |$$ |$$$$$$$ | $$ | $$ | $$ | $$$$$$$/ $$$$$$$/ $$$$/ $$ |$$ |$$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ |$$ |$$ |__$$ | $$ | $$ |/ $$ |$$ | $$ | $$ | $$ |$$ |$$ $$/ $$/ $$/ $$$$$$/ $$/ $$/ $$/ $$/ $$/ $$$$$$$/
```

              https://hippylib.github.io

hIPPYlib implements state-of-the-art scalable algorithms for deterministic and Bayesian inverse problems governed by partial differential equations (PDEs). It builds on FEniCS (a parallel finite element element library) for the discretization of the PDE and on PETSc for scalable and efficient linear algebra operations and solvers.

For building instructions, see the file INSTALL.md. Copyright information and licensing restrictions can be found in the file COPYRIGHT.

The best starting point for new users interested in hIPPYlib's features are the interactive tutorials in the tutorial folder.

Conceptually, hIPPYlib can be viewed as a toolbox that provides the building blocks for experimenting new ideas and developing scalable algorithms for PDE-constrained deterministic and Bayesian inverse problems.

In hIPPYlib the user can express the forward PDE and the likelihood in weak form using the friendly, compact, near-mathematical notation of FEniCS, which will then automatically generate efficient code for the discretization. Linear and nonlinear, and stationary and time-dependent PDEs are supported in hIPPYlib. For stationary problems, gradient and Hessian information can be automatically generated by hIPPYlib using FEniCS symbolic differentiation of the relevant weak forms. For time-dependent problems, instead, symbolic differentiation can only be used for the spatial terms, and the contribution to gradients and Hessians arising from the time dynamics needs to be provided by the user.

Noise and prior covariance operators are modeled as inverses of elliptic differential operators allowing us to build on existing fast multigrid solvers for elliptic operators without explicitly constructing the dense covariance operator.

The key property of the algorithms underlying hIPPYlib is that solution of the deterministic and Bayesian inverse problem is computed at a cost, measured in forward PDE solves, that is independent of the parameter dimension.

hIPPYlib provides a robust implementation of the inexact Newton-conjugate gradient algorithm to compute the maximum a posterior (MAP) point. The gradient and Hessian actions are computed via their weak form specification in FEniCS by constraining the state and adjoint variables to satisfy the forward and adjoint problem. The Newton system is solved inexactly by early termination of CG iterations via Eisenstat-Walker (to prevent oversolving) and Steihaug (to avoid negative curvature) criteria. Two globalization techniques are available to the user: Armijo back-tracking line search and trust region.

In hIPPYlib, the posterior covariance is approximated by the inverse of the Hessian of the negative log posterior evaluated at the MAP point. This Gaussian approximation is exact when the parameter-to-observable map is linear; otherwise, its logarithm agrees to two derivatives with the log posterior at the MAP point, and thus it can serve as a proposal for Hessian-based Markov chain Monte Carlo (MCMC) methods. hIPPYlib makes the construction of the posterior covariance tractable by invoking a low-rank approximation of the Hessian of the log likelihood.

hIPPYlib also offers scalable methods for sample generation. To sample large scale spatially correlated Gaussian random fields from the prior distribution, hIPPYlib implements a new method that strongly relies on the structure of the covariance operator defined as the inverse of a differential operator: by exploiting the assembly procedure of finite element matrices hIPPYlib constructs a sparse Cholesky-like rectangular decomposition of the precision operator. To sample from a local Gaussian approximation to the posterior (such as at the MAP point) hIPPYlib exploits the low rank factorization of the Hessian of the log likelihood to correct samples from the prior distribution. Finally, to explore the posterior distribution, hIPPYlib implements dimension independent MCMC sampling methods enchanted by Hessian information.

Finally, randomized and probing algorithms are available to compute the pointwise variance of the prior/posterior distribution and the trace of the covariance operator.

Owner

  • Name: hippylib
  • Login: hippylib
  • Kind: organization

JOSS Publication

hIPPYlib: An Extensible Software Framework for Large-Scale Inverse Problems
Published
October 23, 2018
Volume 3, Issue 30, Page 940
Authors
Umberto Villa
Institute for Computational Engineering & Sciences, The University of Texas at Austin
Noemi Petra
Applied Mathematics, School of Natural Sciences, University of California, Merced
Omar Ghattas
Institute for Computational Engineering & Sciences, Department of Mechanical Engineering, and Department of Geological Sciences, The University of Texas at Austin
Editor
Lindsey Heagy ORCID
Tags
Infinite-dimensional inverse problems adjoint-based methods numerical optimization Bayesian inference uncertainty quantification PDE toolkit

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Villa"
  given-names: "Umberto"
- family-names: "Petra"
  given-names: "Noemi"
- family-names: "Ghattas"
  given-names: "Omar"
title: "hIPPYlib: An Extensible Software Framework for Large-Scale Inverse Problems Governed by PDEs"
version: 3.0.0
doi: 10.5281/zenodo.1234
date-released: 2020-02-02
url: "https://github.com/hippylib/hippylib"
references:
  - type: article
    authors:
    - family-names: "Villa"
      given-names: "Umberto"
    - family-names: "Petra"
      given-names: "Noemi"
    - family-names: "Ghattas"
      given-names: "Omar"
    title: "hIPPYlib: An Extensible Software Framework for Large-Scale Inverse Problems Governed by PDEs; Part I: Deterministic Inversion and Linearized Bayesian Inference"
    journal: "ACM Trans. Math. Softw."
    volume: 47
    issue: 2
    year: 2021
    doi: 10.1145/3428447

GitHub Events

Total
  • Issues event: 4
  • Watch event: 9
  • Issue comment event: 3
  • Push event: 5
  • Pull request review comment event: 15
  • Pull request review event: 19
  • Pull request event: 5
  • Fork event: 5
Last Year
  • Issues event: 4
  • Watch event: 9
  • Issue comment event: 3
  • Push event: 5
  • Pull request review comment event: 15
  • Pull request review event: 19
  • Pull request event: 5
  • Fork event: 5

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 201
  • Total Committers: 15
  • Avg Commits per committer: 13.4
  • Development Distribution Score (DDS): 0.199
Past Year
  • Commits: 7
  • Committers: 4
  • Avg Commits per committer: 1.75
  • Development Distribution Score (DDS): 0.571
Top Committers
Name Email Commits
Umberto Villa u****a@g****m 161
Umberto Villa u****a@i****u 15
tomoleary t****y@g****m 7
Graham Pash g****6@g****m 3
siddhantwahal 3****l 3
Dingcheng Luo 4****o 2
Noemi Petra n****a@u****u 2
Christian Boehm c****m@e****h 1
Eldar Khattatov e****h 1
Evan1578 3****8 1
Mathew 5****u 1
Matthias Bussonnier b****s@g****m 1
Tucker Hartland t****d@g****m 1
joshuawchen j****n@u****u 1
ljlozenski 3****i 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 38
  • Total pull requests: 47
  • Average time to close issues: 11 months
  • Average time to close pull requests: 3 months
  • Total issue authors: 20
  • Total pull request authors: 15
  • Average comments per issue: 2.87
  • Average comments per pull request: 1.57
  • Merged pull requests: 41
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 3
  • Pull requests: 8
  • Average time to close issues: about 9 hours
  • Average time to close pull requests: 18 days
  • Issue authors: 3
  • Pull request authors: 4
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • joshuawchen (12)
  • uvilla (5)
  • quang-ha (2)
  • eldarkh (2)
  • siddhantwahal (2)
  • cepez (1)
  • tanggo9 (1)
  • arielxinsu (1)
  • DavideBaroliUniLu (1)
  • hphuoctruong (1)
  • ldong87 (1)
  • JinwooGo (1)
  • lcao11 (1)
  • ElisabethBrockhausQC (1)
  • thartland (1)
Pull Request Authors
  • uvilla (18)
  • tomoleary (9)
  • gtpash (7)
  • dc-luo (4)
  • siddhantwahal (3)
  • eldarkh (3)
  • mathewgaohu (2)
  • Carreau (2)
  • thartland (1)
  • joshuawchen (1)
  • dependabot[bot] (1)
  • ljlozenski (1)
  • bonh (1)
  • boehmc (1)
  • Evan1578 (1)
Top Labels
Issue Labels
enhancement (13) discussion (6) help wanted (3) refactoring (2) invalid (1) good first issue (1) bug (1) testing (1) ci (1) installation (1) wontfix (1)
Pull Request Labels
enhancement (5) WIP (2) refactoring (1) installation (1) ci (1) dependencies (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 179 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 3
  • Total maintainers: 2
pypi.org: hippylib

an Extensible Software Framework for Large-scale Deterministic and Bayesian Inverse Problems

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 179 Last month
Rankings
Forks count: 6.4%
Stargazers count: 6.5%
Dependent packages count: 10.0%
Average: 14.5%
Dependent repos count: 21.7%
Downloads: 27.9%
Maintainers (2)
Last synced: 4 months ago

Dependencies

doc/requirements.txt pypi
  • m2r *
  • mistune ==0.8.4
.github/workflows/ci.yaml actions
  • actions/checkout v2 composite
setup.py pypi