A Statistical Parameter Optimization Tool for Python
spotpy_.podcast.mp4
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 puplished 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
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 - Dynamicallly 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
- logNormal
- Chisquare
- Exponential
- Gamma
- Wald
- Weilbull
-
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
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
-
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!
Have a look at https://github.com/thouska/spotpy/tree/master/spotpy/examples and https://spotpy.readthedocs.io/en/latest/getting_started/
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
See Google Scholar for a continuously updated list.