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.

https://scitools.org.uk/cartopy/docs/stable/

cftime

cftime provides functions for handling time in NetCDF files according to the Climate and Forecast (CF) conventions.

https://unidata.github.io/cftime/

cf-units

cf-units provides units conversion following the Climate and Forecast (CF) conventions.

https://cf-units.readthedocs.io/en/stable/

Clize

Clize automatically generates command line interfaces (CLI) from Python function signatures.

https://clize.readthedocs.io/en/stable/

Dask

Dask lazy-loaded arrays are used (often via Iris) to reduce the amount of data loaded into memory at once.

https://dask.org/

Iris

Iris cubes are used as a primary data structure throughout the IMPROVER code.

https://scitools-iris.readthedocs.io/en/stable/

NetCDF4

Python library for reading and writing NetCDF data files via Iris.

https://unidata.github.io/netcdf4-python/

Numpy

Multidimensional numerical array library, used as the basis for Iris cubes and dask arrays.

https://numpy.org/doc/stable/

Scipy

Scientific python library, used for a variety of statistical, image processing, interpolation and spatial functions.

https://docs.scipy.org/doc/scipy/reference/

Sigtools

Sigtools provides introspection tools for function signatures. Sigtools is required by clize, so this dependency is needed anyway despite minor usage in IMPROVER.

https://sigtools.readthedocs.io/en/stable/

Sphinx

Sphinx is a documentation library for Python. IMPROVER requires it at runtime to generate help strings from CLI function docstrings via clize.

https://www.sphinx-doc.org/en/master/

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.

https://pysteps.github.io/

Required for CLIs: nowcast-accumulate, nowcast-extrapolate, nowcast-optical-flow-from-winds

pytz

Timezone database for Python.

https://pythonhosted.org/pytz/

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