• Stars
    star
    126
  • Rank 284,543 (Top 6 %)
  • Language
    C++
  • Created over 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

tools for scalable and non-intrusive parameter estimation, uncertainty analysis and sensitivity analysis

pestpplogo image

PEST++

a Software Suite for Parameter Estimation, Uncertainty Analysis, Management Optimization and Sensitivity Analysis

PEST++ is a software suite aimed at supporting complex numerical models in the decision-support context. Much focus has been devoted to supporting environmental models (groundwater, surface water, etc) but these tools are readily applicable to any computer model.


Master branch: master branch

Develop branch: develop


Documentation

The latest official report documenting PEST++ is available from the USGS:

https://pubs.er.usgs.gov/publication/tm7C26

Suggested Citation:

White, J.T., Hunt, R.J., Fienen, M.N., and Doherty, J.E., 2020, Approaches to Highly Parameterized Inversion: PEST++ Version 5, a Software Suite for Parameter Estimation, Uncertainty Analysis, Management Optimization and Sensitivity Analysis: U.S. Geological Survey Techniques and Methods 7C26, 52 p., https://doi.org/10.3133/tm7C26.


User's Manual

The lastest PEST++ users manual is available here or as a word document.


Links to latest binaries

As of version 4.3.11, PEST++ pre-compiled binaries for windows and linux are available as a github release:

https://github.com/usgs/pestpp/releases


Compiling

The develop branch includes a Visual Studio solution, as well as CMake files for building on all operating systems using g++, MSVC, and/or intel C++.

See details here to compile using CMake.


Overview

The PEST++ software suite includes several stand-alone tools for model-independent (non-intrusive) computer model parameter estimation and uncertainty analysis. Codes include:

  • pestpp-glm: deterministic GLM parameter estimation using "on-the-fly" subspace reparameterization, effectively reproducing the SVD-Assist methodology of PEST without any user intervention and FOSM-based parameter and (optional) forecast uncertainty estimation with support for generating Bayes-linear posterior parameter realizations.

  • pestpp-sen: Global sensitivity analysis using either Morris or Sobol

  • pestpp-swp: a generic parallel run utility driven by a CSV file of parameter values

  • pestpp-opt: chance-constrained linear programming

  • pestpp-ies: iterative ensemble smoother implementation of GLM (based on the work Chen and Oliver 2013) with support for generic localization (local analysis and/or covariance localization)

  • pestpp-mou: multi-objective optimization under uncertainty using evolutionary algorithms (single objective also!)

  • pestpp-da: model-independent ensemble-based sequential and batch iterative data assimilation with options to use standard Kalman update, multiple data assimilation (MDA), or the GLM algorithm of Chen and Oliver (2013).

All members of the software suite can be compiled for PC, MAC, or Linux and have several run managers to support parallelization. Windows users with older OS versions should use the iwin binaries (starting "i", compiled with intel C++) to avoid the dreaded MSVC missing runtime DLL issue.


Funding

Funding for PEST++ has been provided by the U.S. Geologial Survey. The New Zealand Strategic Science Investment Fund as part of GNS Science’s (https://www.gns.cri.nz/) Groundwater Research Programme has also funded contributions 2018-present. Intera, Inc. also provides ongoing support for PEST++.


PEST++ References:

White, J.T., Hunt, R.J., Fienen, M.N., and Doherty, J.E., 2020, Approaches to Highly Parameterized Inversion: PEST++ Version 5, a Software Suite for Parameter Estimation, Uncertainty Analysis, Management Optimization and Sensitivity Analysis: U.S. Geological Survey Techniques and Methods 7C26, 52 p., https://doi.org/10.3133/tm7C26.

White, J. T., 2018, A model-independent iterative ensemble smoother for efficient history-matching and uncertainty quantification in very high dimensions. Environmental Modelling & Software. 109. 10.1016/j.envsoft.2018.06.009. http://dx.doi.org/10.1016/j.envsoft.2018.06.009.

White, J. T., Fienen, M. N., Barlow, P. M., and Welter, D.E., 2017, A tool for efficient, model-independent management optimization under uncertainty. Environmental Modeling and Software. http://dx.doi.org/10.1016/j.envsoft.2017.11.019.

Welter, D.E., White, J.T., Hunt, R.J., and Doherty, J.E., 2015, Approaches in highly parameterized inversion— PEST++ Version 3, a Parameter ESTimation and uncertainty analysis software suite optimized for large environmental models: U.S. Geological Survey Techniques and Methods, book 7, chap. C12, 54 p., http://dx.doi.org/10.3133/tm7C12.

Welter, D.E., Doherty, J.E., Hunt, R.J., Muffels, C.T., Tonkin, M.J., and Schreüder, W.A., 2012, Approaches in highly parameterized inversion—PEST++, a Parameter ESTimation code optimized for large environmental models: U.S. Geological Survey Techniques and Methods, book 7, section C5, 47 p., available only at http://pubs.usgs.gov/tm/tm7c5.


Related Links:


Testing

The benchmarks folder contains a simple worked example and basic testing routines that are used for basic CI testing. Many full-worked test problems of varying sizes are now located in separate repos:


Dependencies

Much work has been done to avoid additional external dependencies in PEST++. As currently designed, the project is fully self-contained.


optional ++ arguments

please see the PEST++ users manual in the documentation directory for a current and complete description of all ++ options


USGS disclaimer

This software has been approved for release by the U.S. Geological Survey (USGS). Although the software has been subjected to rigorous review, the USGS reserves the right to update the software as needed pursuant to further analysis and review. No warranty, expressed or implied, is made by the USGS or the U.S. Government as to the functionality of the software and related material nor shall the fact of release constitute any such warranty. Furthermore, the software is released on condition that neither the USGS nor the U.S. Government shall be held liable for any damages resulting from its authorized or unauthorized use

More Repositories

1

shakemap

Near-real-time maps of ground motion and shaking intensity
108
star
2

libcomcat

Library of functions and wrapper scripts for accessing ANSS ComCat server data
Jupyter Notebook
71
star
3

slab2

Slab2.0 is a three-dimensional compilation of global subduction geometries, separated into regional models for each major subduction zone.
Python
68
star
4

groundmotion-processing

Parsing and processing ground motion data
54
star
5

devcorner

This meta-repository will serve as a reference location for a number of github repositories sharing ANSS ComCat-related code.
53
star
6

nshmp-haz

National Seismic Hazard Mapping Project (NSHMP) Code
Java
37
star
7

landslides-trigrs

37
star
8

swarm

a Java application designed to display and analyze seismic waveforms in real-time.
Java
36
star
9

earthquake-eventpages

Web application for displaying earthquake event pages.
TypeScript
29
star
10

earthquake-global_vs30

Global Vs30
Makefile
25
star
11

nshmp-haz-fortran

National Seismic Hazard Mapping Project (NSHMP) Legacy Fortran Code
Fortran
20
star
12

strec

STREC stands for SeismoTectonic Regime Earthquake Calculator. It’s purpose is to determine automatically the earthquake type (subduction zone interface, active crustal shallow, stable continental region, etc.) and the earthquake focal mechanism.
Python
18
star
13

prism

Performs data processing on earthquake sensor data, transforming raw sensor counts into acceleration, velocity, and displacement information.
HTML
18
star
14

waterdataui

[Beta] Water Data For The Nation Site Pages
JavaScript
18
star
15

earthquake-website

USGS Earthquake Hazards Program Website
PostScript
18
star
16

gspy

Jupyter Notebook
17
star
17

search_api

JavaScript API for creating a location search widget in a web page.
11
star
18

shakecast

ShakeCast
Python
11
star
19

landslides-thresholds

Thresh – Software for Tracking Rainfall Thresholds for Landslide and Debris Flow Occurrence (A collection of Fortran programs, Python scripts, shell scripts and Windows batch files along with sample data)
Fortran
11
star
20

earthquake-latest-earthquakes

Mobile friendly, interactive earthquake map and list application.
JavaScript
11
star
21

pager

Prompt Assessment of Global Earthquakes for Response (PAGER)
PostScript
10
star
22

groundfailure

Earthquake-triggered ground failure
10
star
23

ps2ff

Produce approximated rupture distances from point source information
Python
10
star
24

Predictive-Soil-Mapping

R
10
star
25

warc-iridium-sbd-decoder

Java library for decoding Iridium Short Burst Data packets.
Java
10
star
26

nshmp-haz-ws

National Seismic Hazard Mapping Project (NSHMP) Web Service Code
JavaScript
10
star
27

winston

Winston is a Java-based seismic wave server, which provides data and plots to clients.
Java
10
star
28

nshmp-haz-catalogs

National Seismic Hazard Mapping Project (NSHMP) Earthquake Catalogs
C
9
star
29

neic-glass3

Next generation seismic event detection and association algorithm
C++
9
star
30

landslides-mLS

Estimates landslide magnitude and fits a frequency-area distribution to a landslide inventory
MATLAB
9
star
31

cookiecutter-python-package

A simple Python project template for U.S. Geological Survey (USGS) software projects.
Python
9
star
32

pdl

Product Distribution Layer
Java
9
star
33

water-fcpg-tools

The Flow-Conditioned Parameter Grid Tools use flow direction grids and input parameter datasets to produce pre-computed girds of upstream basin characteristics.
Python
9
star
34

geomag-imp

Python
8
star
35

wdfn-blog

The blog of USGS Water Data for the Nation
HTML
8
star
36

nshm-cous-2014

NSHM: Conterminous U.S. 2014
8
star
37

nshm-cous-2018

NSHM: Conterminous U.S. 2018
7
star
38

waterdata_labs

Landing page for experimental labs.waterdata.usgs.gov
HTML
7
star
39

generate-quakeML

Python
7
star
40

landslides-post-wildfire-debris-flow

A web application that displays estimates for the probability and volume of debris flows that may be produced by a storm in a recently burned area
JavaScript
7
star
41

earthquake-detection-formats

Data exchange formats to communicate seismic event detection information
C++
6
star
42

nabatr

R
6
star
43

icoast

PHP
6
star
44

MapIO

Provides library for dealing with grid formats
Jupyter Notebook
6
star
45

neic-locator

Port of the current NEIC locator from FORTRAN77 to Java
Java
6
star
46

nshm-cous-2008

NSHM: Conterminous U.S. 2008
6
star
47

hazdev-template

Lightweight php template framework
PHP
6
star
48

earthquake-cencalvm

Query software for USGS San Francisco Bay Area seismic velocity model
C++
5
star
49

eq-convert-catalog

Python
5
star
50

earthquake-impact-utils

Utilities to support USGS earthquake shaking and impacts software, such as ShakeMap, PAGER, and groundfailure.
Python
5
star
51

rcomcat

R library for searching the ANSS ComCat comprehensive earthquake catalog.
R
5
star
52

strongmotionfetch

Python
5
star
53

water-datapreptools

DEPRECATED Tools to prepare terrain data for inclusion in USGS StreamStats.
Python
5
star
54

hazdev-location-view

Web library for getting location information from a user.
TypeScript
4
star
55

geo-data-portal

4
star
56

neicmap

Python
4
star
57

nshm-ak-2007

NSHM: Alaska 2007
4
star
58

jem-bmd-library

JEM BMD Reader Library Java library to read and query from Binary Modeling Data (BMD) output from EPA WASP model.
Java
4
star
59

landslides-website

JavaScript
4
star
60

hazdev-leaflet

General utilities for working with Leaflet
JavaScript
3
star
61

eaarl-py

Exploration of EAARL data in Python
Python
3
star
62

gmeg-shearzone-flowstress

Flow Stress calculations for quartz paleopiezometery to estimate strain and slip rates.
Python
3
star
63

pubswh-ui

Publications Warehouse UI - both public facing and manager interface
JavaScript
3
star
64

pubs-services

Java
3
star
65

nwisweb-tableau-data-connector

JavaScript
3
star
66

hazdev-broker

Small Rapid Data Distribution
C++
3
star
67

matcomcat

Matlab wrapper around ANSS ComCat server
MATLAB
3
star
68

perl-lsi-megasas

Perl interface to monitor LSI MegaRAID controllers
Perl
2
star
69

arcgis-sample

Python
2
star
70

vsc-valve

JavaScript
2
star
71

wwsclient

FreeMarker
2
star
72

pestpp-ies_benchmarks

TeX
2
star
73

aqts-ts-type-router

Java
2
star
74

time-series-services

Java
2
star
75

logger2csv

Create daily CSV files containing data retrieved from a CampbellScientific data logger
Java
2
star
76

earthquake-vs30

JavaScript
2
star
77

lcmap-ard-gap-filler

Python
2
star
78

UCRB_Salinity

R
2
star
79

coawst

2
star
80

landslides-metadata

Automate production of metadata following the USGS geospatial metadata format
Python
2
star
81

iplover

Quantifying coastal habitat utilization with smartphones!
JavaScript
2
star
82

wdfn-graph-server

Water Data For the Nation Image Server
JavaScript
2
star
83

ansible-rhel7-disa-stig-role

DISA STIG for Red Hat Enterprise Linux 7 - Ansible role generated from the SCAP Security Guide project
2
star
84

neic-traveltime

Port of the NEIC 'TTimes' libraries from FORTRAN77 to Java
Java
2
star
85

volcano-core

Utility classes used across multiple applications
Java
2
star
86

shakelib

2
star
87

dataRetrieval

This R package is designed to obtain USGS or EPA water quality sample data, streamflow data, and metadata directly from web services.
R
2
star
88

shakecast-aebm

A loss estimation tool that implements HAZUS's Advanced Engineering Building Module
Python
2
star
89

legacy-webscripts

Perl
1
star
90

shakemap-scenarios

Shakemap scenarios
Python
1
star
91

neicio

Python
1
star
92

Mid-Atlantic

JavaScript
1
star
93

DC-Area

JavaScript
1
star
94

wdfn-viz

Moved to https://code.usgs.gov/wma/iow/wdfn-viz
HTML
1
star
95

MOVE.1

1
star
96

nccv_code_examples

National Climate Change Viewer Code Examples
IDL
1
star
97

NMC-volunteermap

JavaScript
1
star
98

pensive

A tool for visualizing the spectra of continous data from a network of seismometers.
Java
1
star
99

aqts-capture-field-visit-metadata

Java
1
star
100

neic-catalog-qc

Seismic catalog quality control reports
Python
1
star