IES Module

Date : August 2018
Copyright : © 2018 - 2020 by Ann Crabbé (KU Leuven)
Acknowledgements : Translated from VIPER Tools 2.0 (UC Santa Barbara, VIPER Lab).
Dar Roberts, Kerry Halligan, Philip Dennison, Kenneth Dudley, Ben Somers, Ann Crabbé

This file is part of the Spectral Libraries QGIS plugin and python package.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License (COPYING.txt). If not see
class spectral_libraries.core.ies.Ies[source]

Bases: object

Iterative Endmember Selection (IES) is used to identify the spectral library subset that provides the best class separability. The basis for this is a RMSE-based kappa coefficient. In an iterative manner, endmembers are added and removed from the subset until the kappa coefficient no longer improves.


Schaaf, A.N., Dennison, P.E., Fryer, G.K., Roth, K.L., and Roberts, D.A., 2011, Mapping Plant Functional Types at Multiple Spatial Resolutions using Imaging Spectrometer Data, GIScience Remote Sensing, 48, p. 324-344.

Roth, K.L., Dennison, P.E., and Roberts, D.A., 2012, Comparing endmember selection techniques for accurate mapping of plant species and land cover using imaging spectrometer data, Remote Sensing of Environment, 127, p. 139-152.

execute(library: numpy.array, class_list: numpy.array, constraints: tuple = (-0.05, 1.05, 0.025), forced_list: numpy.array = None, forced_step: int = None, multiprocessing: bool = True, summary: bool = False, set_progress: callable = None, log: callable = <built-in function print>)[source]

Execute the IES algorithm. The result is a 1-D numpy array of selected endmembers. In case a summary is requested, it is delivered as a second output variable.

  • library – spectral library [spectra as columns], scaled to reflectance values, without bad bands
  • class_list – int array with the numerical class for each spectrum (e.g. GV = 1, SOIL = 2)
  • constraints – min fraction, max fraction and max RMSE.
  • forced_list – int array with indices of the endmembers that should be forcefully included
  • forced_step – the loop in which the forced_list should be included (starting from 0)
  • multiprocessing – use multiprocessing or not (option is deactivated)
  • summary – return a summary of the process or not
  • set_progress – communicate progress (refer to the progress bar in case of GUI; otherwise print to console)
  • log – communicate messages (refer to the print_log tab in the GUI; otherwise print to the console)

numpy array with the indices of the selected endmembers [+ summary as a dict in case requested]

spectral_libraries.core.ies.printProgress(value: int)[source]

Replacement for the GUI progress bar