GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - SALib/SALib: Sensitivity Analysis Library in Python. Contains Sobol, Morris, FAST, and other methods.

BranchesTags
Open more actions menu

Latest commit

 

History

2,142 Commits
2,142 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
docs
docs
 
 
examples
examples
 
 
paper
paper
 
 
src/SALib
src/SALib
 
 
tests
tests
 
 
.checkignore
.checkignore
 
 
.coveragerc
.coveragerc
 
 
.coveralls.yml
.coveralls.yml
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
.readthedocs.yml
.readthedocs.yml
 
 
.zenodo.json
.zenodo.json
 
 
AUTHORS.rst
AUTHORS.rst
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CITATION.cff
CITATION.cff
 
 
CITATIONS.rst
CITATIONS.rst
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
FAQ.md
FAQ.md
 
 
LICENSE.md
LICENSE.md
 
 
README-advanced.md
README-advanced.md
 
 
README.rst
README.rst
 
 
environment.yml
environment.yml
 
 
pyproject.toml
pyproject.toml
 
 

Repository files navigation

https://raw.githubusercontent.com/SALib/SALib/main/docs/assets/logo.png

Sensitivity Analysis Library (SALib)

Python implementations of commonly used sensitivity analysis methods. Useful in systems modeling to calculate the effects of model inputs or exogenous factors on outputs of interest.

Documentation: ReadTheDocs

Requirements: NumPy, SciPy, matplotlib, pandas, Python 3 (from SALib v1.2 onwards SALib does not officially support Python 2)

Installation: pip install SALib or pip install . or conda install SALib

Build Status: Build Status Test Coverage: Coverage Status

Included methods

  • Sobol Sensitivity Analysis (Sobol 2001, Saltelli 2002, Saltelli et al. 2010)
  • Method of Morris, including groups and optimal trajectories (Morris 1991, Ruano et al. 2012)
  • Radial OAT (Campolongo et al. 2007, Campolongo et al. 2011)
  • extended Fourier Amplitude Sensitivity Test (eFAST) (Cukier et al. 1973, Saltelli et al. 1999, Pujol (2006) in Iooss et al., (2021))
  • Random Balance Designs - Fourier Amplitude Sensitivity Test (RBD-FAST) (Tarantola et al. 2006, Plischke 2010, Tissot et al. 2012)
  • Delta Moment-Independent Measure (Borgonovo 2007, Plischke et al. 2013)
  • Derivative-based Global Sensitivity Measure (DGSM) (Sobol and Kucherenko 2009)
  • Shapley Effects (Goda 2021)
  • Fractional Factorial Sensitivity Analysis (Saltelli et al. 2008)
  • High-Dimensional Model Representation (HDMR) (Rabitz et al. 1999, Li et al. 2010)
  • PAWN (Pianosi and Wagener 2018, Pianosi and Wagener 2015)
  • Regional Sensitivity Analysis (based on Hornberger and Spear, 1981, Saltelli et al. 2008, Pianosi et al., 2016)

Contributing: see here

Quick Start

Procedural approach

from SALib.sample import saltelli
from SALib.analyze import sobol
from SALib.test_functions import Ishigami
import numpy as np

problem = {
  'num_vars': 3,
  'names': ['x1', 'x2', 'x3'],
  'bounds': [[-np.pi, np.pi]]*3
}

# Generate samples
param_values = saltelli.sample(problem, 1024)

# Run model (example)
Y = Ishigami.evaluate(param_values)

# Perform analysis
Si = sobol.analyze(problem, Y, print_to_console=True)
# Returns a dictionary with keys 'S1', 'S1_conf', 'ST', and 'ST_conf'
# (first and total-order indices with bootstrap confidence intervals)

It's also possible to specify the parameter bounds in a file with 3 columns:

# name lower_bound upper_bound
P1 0.0 1.0
P2 0.0 5.0
...etc.

Then the problem dictionary above can be created from the read_param_file function:

from SALib.util import read_param_file
problem = read_param_file('/path/to/file.txt')
# ... same as above

Lots of other options are included for parameter files, as well as a command-line interface. See the advanced section in the documentation.

Method chaining approach

Chaining calls is supported from SALib v1.4

from SALib import ProblemSpec
from SALib.test_functions import Ishigami

import numpy as np


# By convention, we assign to "sp" (for "SALib Problem")
sp = ProblemSpec({
  'names': ['x1', 'x2', 'x3'],   # Name of each parameter
  'bounds': [[-np.pi, np.pi]]*3,  # bounds of each parameter
  'outputs': ['Y']               # name of outputs in expected order
})

(sp.sample_saltelli(1024, calc_second_order=True)
   .evaluate(Ishigami.evaluate)
   .analyze_sobol(print_to_console=True))

print(sp)

# Samples, model results and analyses can be extracted:
print(sp.samples)
print(sp.results)
print(sp.analysis)

# Basic plotting functionality is also provided
sp.plot()

The above is equivalent to the procedural approach shown previously.

Also check out the FAQ and examples for a full description of options for each method.

How to cite SALib

If you would like to use our software, please cite it using the following:

Iwanaga, T., Usher, W., & Herman, J. (2022). Toward SALib 2.0: Advancing the accessibility and interpretability of global sensitivity analyses. Socio-Environmental Systems Modelling, 4, 18155. doi:10.18174/sesmo.18155

Herman, J. and Usher, W. (2017) SALib: An open-source Python library for sensitivity analysis. Journal of Open Source Software, 2(9). doi:10.21105/joss.00097

paper status

If you use BibTeX, cite using the following entries:

@article{Iwanaga2022,
  title = {Toward {SALib} 2.0: {Advancing} the accessibility and interpretability of global sensitivity analyses},
  volume = {4},
  url = {https://sesmo.org/article/view/18155},
  doi = {10.18174/sesmo.18155},
  journal = {Socio-Environmental Systems Modelling},
  author = {Iwanaga, Takuya and Usher, William and Herman, Jonathan},
  month = may,
  year = {2022},
  pages = {18155},
}

@article{Herman2017,
  doi = {10.21105/joss.00097},
  url = {https://doi.org/10.21105/joss.00097},
  year  = {2017},
  month = {jan},
  publisher = {The Open Journal},
  volume = {2},
  number = {9},
  author = {Jon Herman and Will Usher},
  title = {{SALib}: An open-source Python library for Sensitivity Analysis},
  journal = {The Journal of Open Source Software}
}

Projects that use SALib

Many projects now use the Global Sensitivity Analysis features provided by SALib. Here is a selection:

Software

  • The City Energy Analyst
  • pynoddy
  • savvy
  • rhodium
  • pySur
  • EMA workbench
  • Brain/Circulation Model Developer
  • DAE Tools
  • agentpy
  • uncertainpy
  • CLIMADA

Blogs

  • Sensitivity Analysis in Python
  • Sensitivity Analysis with SALib
  • Running Sobol using SALib
  • Extensions of SALib for more complex sensitivity analyses

Videos

  • PyData Presentation on SALib

If you would like to be added to this list, please submit a pull request, or create an issue.

Many thanks for using SALib.

How to contribute

See here for how to contribute to SALib.

License

Copyright (C) 2012-2019 Jon Herman, Will Usher, and others. Versions v0.5 and later are released under the MIT license.

About

Sensitivity Analysis Library in Python. Contains Sobol, Morris, FAST, and other methods.

SALib.github.io/SALib/

Topics

global-sensitivity-analysisjossmorrisnumpypythonsalibsensitivity-analysissensitivity-analysis-librarysoboluncertaintyuncertainty-quantification

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

1.0k stars

Watchers

18 watching

Forks

278 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.