From 9f9806e21f18322dc7987f6a2af33e035d4722a1 Mon Sep 17 00:00:00 2001
From: acpaquette <acp263@nau.edu>
Date: Tue, 17 Jul 2018 08:34:00 -0500
Subject: [PATCH] Updated m3 with derived products from pysat (#66)

---
 plio/io/io_moon_minerology_mapper.py | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/plio/io/io_moon_minerology_mapper.py b/plio/io/io_moon_minerology_mapper.py
index c28a7dc..de573ac 100644
--- a/plio/io/io_moon_minerology_mapper.py
+++ b/plio/io/io_moon_minerology_mapper.py
@@ -2,6 +2,15 @@ import os
 import numpy as np
 from .io_gdal import GeoDataset
 from .hcube import HCube
+
+try:
+    from libpysat.derived import m3, crism
+    from libpysat.derived.utils import add_derived_funcs
+    libpysat_enabled = True
+except:
+    print('No libpysat module. Unable to attached derived product functions')
+    libpysat_enabled = False
+
 import gdal
 
 
@@ -9,6 +18,24 @@ class M3(GeoDataset, HCube):
     """
     An M3 specific reader with the spectral mixin.
     """
+    def __init__(self, file_name):
+
+        GeoDataset.__init__(self, file_name)
+        HCube.__init__(self)
+
+        if libpysat_enabled:
+            self.derived_funcs = add_derived_funcs(m3)
+
+    def __getattr__(self, name):
+        try:
+            func = self.derived_funcs[name]
+
+            setattr(self, name, func.__get__(self))
+            return getattr(self, name)
+
+        except:
+            raise AttributeError()
+
     @property
     def wavelengths(self):
         if not hasattr(self, '_wavelengths'):
-- 
GitLab