Dependencies
IMPROVER builds on the functionality provided by a range of open source libraries.
Some of these libraries are widely used throughout the IMPROVER code, so are considered as required for IMPROVER as a whole.
Other libraries are only used in specific parts of IMPROVER. These libraries are optional for IMPROVER as a whole, but are required to use related parts of IMPROVER. Optional installation of these libraries allows for smaller sized installations of IMPROVER and reduces conda environment dependency solving difficulties.
Required
cartopy
Cartopy is used for grid projections and coordinate transformations.
cftime
cftime provides functions for handling time in NetCDF files according to the Climate and Forecast (CF) conventions.
cf-units
cf-units provides units conversion following the Climate and Forecast (CF) conventions.
Clize
Clize automatically generates command line interfaces (CLI) from Python function signatures.
Dask
Dask lazy-loaded arrays are used (often via Iris) to reduce the amount of data loaded into memory at once.
Iris
Iris cubes are used as a primary data structure throughout the IMPROVER code.
NetCDF4
Python library for reading and writing NetCDF data files via Iris.
Numpy
Multidimensional numerical array library, used as the basis for Iris cubes and dask arrays.
Scipy
Scientific python library, used for a variety of statistical, image processing, interpolation and spatial functions.
Sigtools
Sigtools provides introspection tools for function signatures. Sigtools is required by clize, so this dependency is needed anyway despite minor usage in IMPROVER.
Sphinx
Sphinx is a documentation library for Python. IMPROVER requires it at runtime to generate help strings from CLI function docstrings via clize.
Optional dependencies
python-stratify
Vectorised (cython) interpolation, particularly for vertical levels of the atmosphere.
https://github.com/SciTools/python-stratify
Required for CLIs: interpolate-using-difference
, phase-change-level
statsmodels
Estimation of statistical models, used for EMOS.
https://www.statsmodels.org/stable/
Required for CLIs: estimate-emos-coefficients
numba
JIT compiler for numerical Python code, used for better computational performance.
https://numba.readthedocs.io/en/stable/
Optionally used by CLIs: generate-realizations
, generate-percentiles
, spot-extract
, apply-emos-coefficients
PySTEPS
Probabilistic nowcasting of radar precipitation fields, used for nowcasting.
Required for CLIs: nowcast-accumulate
, nowcast-extrapolate
,
nowcast-optical-flow-from-winds
pytz
Timezone database for Python.
LightGBM
Gradient boosted decision tree ensemble framework, used for RainForests calibration.
https://lightgbm.readthedocs.io/en/latest/
Required for CLIs: apply-rainforests-calibration
Treelite
Model compiler for decision tree ensembles, used for more efficient computation of GBDT ensembles required for RainForests calibration.
https://treelite.readthedocs.io/en/latest/index.html
Required for CLIs: apply-rainforests-calibration