A Statistical Parameter Optimization Tool for Python
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:
MC
)MCMC
)MLE
)LHS
)SA
)SCE-UA
)DE-MCz
)DREAM
)ROPE
)FAST
)ABC
)FSCABC
)DDS
)PA-DDS
)NSGA-II
)Wide range of objective functions (also known as loss function, fitness function or energy function) to validate the sampled results. Available functions are
NSE
)logNSE
)logp
)r
)r^2
)MSE
)RMSE
)MAE
)RRMSE
)AI
)dMSE
)KGE
)KGE_non_parametric
)Wide range of hydrological signatures functions to validate the sampled results:
Prebuild parameter distribution functions:
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: ram
storage for fast sampling a simple , csv
tables
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!
git checkout -b my-new-feature
)CHANGELOG.md
git commit -m "Add some feature"
)git push origin my-new-feature
)See Google Scholar for a continuously updated list.