hylite

An open-source python toolbox for hyperspectral data preprocessing, correction, projection and analysis.


Tutorials

A variety of interactive notebook tutorials are available for hylite:

Basic:

Advanced:


Publications

If you use hylite for your work then please cite:

Other relevant papers include:

  • Thiele, S.T., Bnoulkacem, Z., Lorenz, S., Bordenave, A., Menegoni, N., Madriz, Y., Dujoncquoy, E., Gloaguen, R. and Kenter, J., 2021. Mineralogical Mapping with Accurately Corrected Shortwave Infrared Hyperspectral Data Acquired Obliquely from UAVs. Remote Sensing, 14(1), p.5. https://doi.org/10.3390/rs14010005

  • Thiele, S. T., Lorenz, S., Kirsch, M., & Gloaguen, R. (2021). A Novel and Open-Source Illumination Correction for Hyperspectral Digital Outcrop Models. IEEE Transactions on Geoscience and Remote Sensing. https://doi.org/10.1109/TGRS.2021.3098725

  • Lorenz, S., Thiele, S.T., Kirsch, M., Unger, G., Zimmermann, R., Guarnieri, P., Baker, N., Sørensen, E.V., Rosa, D. and Gloaguen, R., 2022. Three-Dimensional, Km-Scale Hyperspectral Data of Well-Exposed Zn–Pb Mineralization at Black Angel Mountain, Greenland. Data, 7(8), p.104. https://doi.org/10.3390/data7080104

  • Guarnieri, P., Thiele, S.T., Baker, N., Sørensen, E.V., Kirsch, M., Lorenz, S., Rosa, D., Unger, G. and Zimmermann, R., 2022. Unravelling the Deformation of Paleoproterozoic Marbles and Zn-Pb Ore Bodies by Combining 3D-Photogeology and Hyperspectral Data (Black Angel Mine, Central West Greenland). Minerals, 12(7), p.800. https://doi.org/10.3390/min12070800

  • Kirsch, M., Mavroudi, M., Thiele, S., Lorenz, S., Tusa, L., Booysen, R., Herrmann, E., Fatihi, A., Möckel, R., Dittrich, T. and Gloaguen, R.,

  • Underground hyperspectral outcrop scanning for automated mine‐face mapping: The lithium deposit of Zinnwald/Cínovec. The Photogrammetric Record, 38(183), pp.408-429. https://doi.org/10.1111/phor.12457

Documentation

Almost all of the modules, classes and functions in hylite have docstrings. These can be viewed in a notebook or python console using the help(...) function or by typing "?" after a class or function name. Searchable documentation is also available online.

  1"""
  2An open-source python toolbox for hyperspectral data preprocessing, correction, projection and analysis.
  3
  4-----------
  5
  6### Tutorials
  7
  8A variety of interactive notebook tutorials are available for *hylite*:
  9
 10Basic:
 11- [Introduction tutorial using GoogleColab](https://drive.google.com/drive/folders/1hkr4gtP1OY_PIK7cynl3dWd3sYi_9s5F?usp=drive_link)
 12- [Another introduction from the VGC conference](https://drive.google.com/drive/folders/1_gDRMrccNG3OMyIPYy0mkpkbN6nn92OW?usp=sharing)
 13
 14Advanced:
 15- [Building corrected hyperclouds](https://tinyurl.com/Maamorilik01)
 16- [Minimum wavelength mapping](https://tinyurl.com/Maamorilik02)
 17- [Visualising hyperclouds](https://tinyurl.com/Maamorilik03)
 18
 19----------
 20
 21### Publications
 22
 23If you use hylite for your work then please cite:
 24
 25* Thiele, S. T., Lorenz, S., et al., (2021). Multi-scale, multi-sensor data integration for automated 3-D geological
 26mapping using hylite. *Ore Geology Reviews*. https://doi.org/10.1016/j.oregeorev.2021.104252
 27
 28Other relevant papers include:
 29
 30* Thiele, S.T., Bnoulkacem, Z., Lorenz, S., Bordenave, A., Menegoni, N., Madriz, Y., Dujoncquoy, E., Gloaguen, R. and Kenter, J., 2021.
 31Mineralogical Mapping with Accurately Corrected Shortwave Infrared Hyperspectral Data Acquired Obliquely from UAVs.
 32*Remote Sensing*, 14(1), p.5. https://doi.org/10.3390/rs14010005
 33
 34* Thiele, S. T., Lorenz, S., Kirsch, M., & Gloaguen, R. (2021).
 35A Novel and Open-Source Illumination Correction for Hyperspectral Digital Outcrop Models. *IEEE Transactions on
 36Geoscience and Remote Sensing*. https://doi.org/10.1109/TGRS.2021.3098725
 37
 38* Lorenz, S., Thiele, S.T., Kirsch, M., Unger, G., Zimmermann, R., Guarnieri, P., Baker, N.,
 39Sørensen, E.V., Rosa, D. and Gloaguen, R., 2022. Three-Dimensional, Km-Scale Hyperspectral Data of Well-Exposed Zn–Pb
 40Mineralization at Black Angel Mountain, Greenland. *Data*, 7(8), p.104. https://doi.org/10.3390/data7080104
 41
 42* Guarnieri, P., Thiele, S.T., Baker, N., Sørensen, E.V., Kirsch, M., Lorenz, S., Rosa, D., Unger, G. and Zimmermann, R., 2022.
 43Unravelling the Deformation of Paleoproterozoic Marbles and Zn-Pb Ore Bodies by Combining 3D-Photogeology and
 44Hyperspectral Data (Black Angel Mine, Central West Greenland). *Minerals*, 12(7), p.800. https://doi.org/10.3390/min12070800
 45
 46* Kirsch, M., Mavroudi, M., Thiele, S., Lorenz, S., Tusa, L., Booysen, R., Herrmann, E., Fatihi, A., Möckel, R., Dittrich, T. and Gloaguen, R.,
 472023. Underground hyperspectral outcrop scanning for automated mine‐face mapping: The lithium deposit of Zinnwald/Cínovec.
 48The Photogrammetric Record, 38(183), pp.408-429. https://doi.org/10.1111/phor.12457
 49
 50-------
 51
 52# Documentation
 53
 54Almost all of the modules, classes and functions in *hylite* have docstrings. These can be viewed in a notebook or
 55python console using the help(...) function or by typing "?" after a class or function name. Searchable documentation
 56is also available online.
 57"""
 58
 59# to generate docs with pdoc run:  pdoc --html hylite --output-dir docs --force
 60
 61# disable numpy multithreading
 62import os
 63os.environ["OMP_NUM_THREADS"] = "1"
 64os.environ["OPENBLAS_NUM_THREADS"] = "1"
 65os.environ["MKL_NUM_THREADS"] = "1"
 66os.environ["VECLIB_MAXIMUM_THREADS"] = "1"
 67os.environ["NUMEXPR_NUM_THREADS"] = "1"
 68
 69#disable annoying warnings
 70#np.warnings.filterwarnings('ignore')
 71#warnings.filterwarnings("ignore", category=DeprecationWarning)
 72# ignore all warnings
 73#def _warn(*args, **kwargs):
 74#    pass
 75#warnings.warn = _warn
 76
 77import warnings
 78warnings.filterwarnings('ignore')
 79warnings.filterwarnings("ignore", category=DeprecationWarning)
 80
 81###########################################
 82## Define useful preset band combinations
 83###########################################
 84RGB = (680.0,550.0,505.0)
 85"""
 86Wavelengths for red [680.0], green [550.0] and blue [505.0]- useful for plotting.
 87Note that we use the upper end of blue as this is the first band of rikola data.
 88"""
 89
 90VNIR = (800.0, 550.0, 505.0)
 91"""Useful preview for VNIR data using (infrared [1972.0], green [644.0], blue [1450.0])."""
 92
 93SWIR = (2200.0,2250.0,2350.0)
 94"""Useful preview for SWIR data (2200.0, 2250.0, 2350.0) sensitive to clay, mica, carbonate and amphibole absorbtions."""
 95
 96BROAD = (1972.0,644.0,1450.0) #useful preview for data that covers visible VNIR and SWIR range
 97"""Useful preview that covers VNIR and SWIR range (1972.0,644.0,1450.0) ."""
 98
 99MWIR = (3000., 3400., 3800. )
100"""Useful preview for MWIR range (3000., 3400., 3800. )."""
101
102LWIR = TIR = (10113., 9156.31, 8527.01)
103"""Useful preview for TIR range (10101.01, 9174.31, 8547.01)."""
104
105band_select_threshold = 25.
106"""Maximum distance (in nanometers) to use when matching wavelengths with band indices. See HyData.get_band_index(...) for more detail."""
107
108#import basic data classes
109from .hyheader import HyHeader
110from .hydata import HyData
111from .hyimage import HyImage
112from .hycloud import HyCloud
113from .hylibrary import HyLibrary
114from .hycollection import HyCollection
115from .hyscene import HyScene
116from .hyfeature import HyFeature, MultiFeature, MixedFeature
RGB = (680.0, 550.0, 505.0)

Wavelengths for red [680.0], green [550.0] and blue [505.0]- useful for plotting. Note that we use the upper end of blue as this is the first band of rikola data.

VNIR = (800.0, 550.0, 505.0)

Useful preview for VNIR data using (infrared [1972.0], green [644.0], blue [1450.0]).

SWIR = (2200.0, 2250.0, 2350.0)

Useful preview for SWIR data (2200.0, 2250.0, 2350.0) sensitive to clay, mica, carbonate and amphibole absorbtions.

BROAD = (1972.0, 644.0, 1450.0)

Useful preview that covers VNIR and SWIR range (1972.0,644.0,1450.0) .

MWIR = (3000.0, 3400.0, 3800.0)

Useful preview for MWIR range (3000., 3400., 3800. ).

band_select_threshold = 25.0

Maximum distance (in nanometers) to use when matching wavelengths with band indices. See HyData.get_band_index(...) for more detail.