spotpy
A Statistical Parameter Optimization Tool for Python
Purpose
https://github.com/user-attachments/assets/4df71cb2-dcf9-4a24-bb78-6e4e1c43356a
SPOTPY is a Python framework that enables the use of Computational optimization techniques for calibration, uncertainty and sensitivity analysis techniques of almost every (environmental-) model. The package is published in the open source journal PLoS One:
Houska, T., Kraft, P., Chamorro-Chavez, A. and Breuer, L.: SPOTting Model Parameters Using a Ready-Made Python Package, PLoS ONE, 10(12), e0145180, doi:10.1371/journal.pone.0145180, 2015
The simplicity and flexibility enables the use and test of different algorithms of almost any model, without the need of complex codes::
sampler = spotpy.algorithms.sceua(model_setup()) # Initialize your model with a setup file
sampler.sample(10000) # Run the model
results = sampler.getdata() # Load the results
spotpy.analyser.plot_parametertrace(results) # Show the results
Features
Complex algorithms bring complex tasks to link them with a model. We want to make this task as easy as possible. Some features you can use with the SPOTPY package are:
-
Fitting models to evaluation data with different algorithms. Available algorithms are:
- Monte Carlo (
MC) - Markov-Chain Monte-Carlo (
MCMC) - Maximum Likelihood Estimation (
MLE) - Latin-Hypercube Sampling (
LHS) - Simulated Annealing (
SA) - Shuffled Complex Evolution Algorithm (
SCE-UA) - Differential Evolution Markov Chain Algorithm (
DE-MCz) - Differential Evolution Adaptive Metropolis Algorithm (
DREAM) - RObust Parameter Estimation (
ROPE) - Fourier Amplitude Sensitivity Test (
FAST) - extended Fourier Amplitude Sensitivity Test (
eFAST) - Artificial Bee Colony (
ABC) - Fitness Scaled Chaotic Artificial Bee Colony (
FSCABC) - Dynamically Dimensioned Search algorithm (
DDS) - Pareto Archived - Dynamically Dimensioned Search algorithm (
PA-DDS) - Fast and Elitist Multiobjective Genetic Algorithm (
NSGA-II)
- Monte Carlo (
-
Wide range of objective functions (also known as loss function, fitness function or energy function) to validate the sampled results. Available functions are
- Bias
- PBias
- Nash-Sutcliffe (
NSE) - logarithmic Nash-Sutcliffe (
logNSE) - logarithmic probability (
logp) - Correlation Coefficient (
r) - Coefficient of Determination (
r^2) - Mean Squared Error (
MSE) - Root Mean Squared Error (
RMSE) - Mean Absolute Error (
MAE) - Relative Root Mean Squared Error (
RRMSE) - Agreement Index (
AI) - Covariance, Decomposed MSE (
dMSE) - Kling-Gupta Efficiency (
KGE) - Non-parametric Kling-Gupta Efficiency (
KGE_non_parametric)
-
Wide range of hydrological signatures functions to validate the sampled results:
- Slope
- Flooding/Drought events
- Flood/Drought frequency
- Flood/Drought duration
- Flood/Drought variance
- Mean flow
- Median flow
- Skewness
- compare percentiles of discharge
-
Prebuild parameter distribution functions:
- Uniform
- Normal
- log-normal
- Chi-Square
- Exponential
- Gamma
- Wald
- Weibull
-
Wide range to adapt algorithms to perform uncertainty-, sensitivity analysis or calibration of a model.
-
Multi-objective support
-
MPI support for fast parallel computing
-
A progress bar monitoring the sampling loops. Enables you to plan your coffee brakes.
-
Use of NumPy functions as often as possible. This makes your coffee brakes short.
-
Different databases solutions:
ramstorage for fast sampling a simple ,csvtables the save solution for long duration samplings. -
Automatic best run selecting and plotting
-
Parameter trace plotting
-
Parameter interaction plot including the Gaussian-kde function
-
Regression analysis between simulation and evaluation data
-
Posterior distribution plot
-
Convergence diagnostics with Gelman-Rubin and the Geweke plot
Install
Classical Python options exist to install SPOTPY:
From PyPi:
pip install spotpy
From Conda-Forge:
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install spotpy
From Source:
python setup.py install
Support
-
Documentation: https://spotpy.readthedocs.io/en/latest/
-
Feel free to contact the authors of this tool for any support questions.
-
Please contact the authors in case of any bug.
-
If you use this package for a scientific research paper, please cite SPOTPY. It is peer-reviewed.
-
Patches/enhancements and any other contributions to this package are very welcome!
Getting started
Have a look at https://github.com/thouska/spotpy/tree/master/spotpy/examples and https://spotpy.readthedocs.io/en/latest/getting_started/
Contributing
Patches/enhancements/new algorithms and any other contributions to this package are very welcome!
- Fork it ( http://github.com/thouska/spotpy/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Add your modifications
- Add short summary of your modifications on
CHANGELOG.md - Commit your changes (
git commit -m "Add some feature") - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
Papers citing SPOTPY
See Google Scholar for a continuously updated list.
Release files for spotpy 1.6.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spotpy-1.6.7.tar.gz | 7.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spotpy-1.6.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.1 MB
Release files / spotpy-1.6.7.tar.gz
| Download URL | spotpy-1.6.7.tar.gz |
|---|---|
| Size | 7.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
50cc0a53c4518d81f5b02580a6eee98c16da48a21dde59a90fe2ed40a1413edd
|
|
BLAKE2b-256 checksum How to use checksums |
af84ac8c24992425eb8eb0163181ef1afdada5c64aac333f50291aaf010c283a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / spotpy-1.6.7-py3-none-any.whl
| Download URL | spotpy-1.6.7-py3-none-any.whl |
|---|---|
| Size | 7.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
add77c4e17f49ecf54865a0f04008aee375d0c64c09a0fe6b3be392f7a280808
|
|
BLAKE2b-256 checksum How to use checksums |
5bb2a7f0d059c664b5fcdf4529df0e15d5075289146e04007fe8c7236051b7c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|