Spectral Python (SPy) is a pure Python module for processing hyperspectral image data (imaging spectroscopy data). It has functions for reading, displaying, manipulating, and classifying hyperspectral imagery. Full details about the package are on the web site.
The latest release is always hosted on PyPI, so if you have pip installed, you can install SPy from the command line with
pip install spectral
Packaged distributions are also hosted at PyPI and GitHub so you can download and unpack the latest zip/tarball, then type
python setup.py install
To install the latest development version, download or clone the git repository and install as above. No explicit installation is required so you can simply access (or symlink) the spectral module within the source tree.
Finally, up-to-date guidance on how to install via the popular conda package and environment management system can be found at official conda-forge documentation.
To run the suite of unit tests, you must have numpy and pytest installed and you must have the sample data files downloaded to the current directory (or one specified by the SPECTRAL_DATA environment variable).
The suite also covers SPy's optional graphics/GUI functionality (2D display via matplotlib/Pillow, and 3D display via PySide6/PyOpenGL), marked with graphics (and, for the 3D window tests specifically, gui3d). Tests for a given package are skipped automatically if that package isn't installed; pass --require-optional-deps to turn a missing optional dependency into a hard failure instead of a skip. A few examples:
Run only the basic tests (I/O and algorithms), explicitly excluding all graphics/GUI tests:
pytest -m "not graphics" spectral/tests
Run the basic tests plus any additional graphics/GUI tests supported by whatever optional packages are currently installed, letting tests for anything still missing skip automatically:
pytest spectral/tests
Run the basic tests and force the 2D rendering/GUI tests (matplotlib, Pillow) to run, failing rather than skipping if either package is missing:
pytest --require-optional-deps=matplotlib,PIL spectral/tests
Run every available test, including the 3D (PySide6/PyOpenGL) GUI tests, failing rather than skipping if any optional dependency -- or a working OpenGL rendering surface -- is unavailable. If no real display is available, run under a virtual one via xvfb-run:
xvfb-run -a pytest --require-optional-deps=all spectral/tests
Using SPy interactively with its visualization capabilities requires IPython and several other packages (depending on the features used). See the web site for details.