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

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