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
Contributing: see here
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.
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.
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
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} }
Many projects now use the Global Sensitivity Analysis features provided by SALib. Here is a selection:
If you would like to be added to this list, please submit a pull request, or create an issue.
Many thanks for using SALib.
See here for how to contribute to SALib.
Copyright (C) 2012-2019 Jon Herman, Will Usher, and others. Versions v0.5 and later are released under the MIT license.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4