From 7d4d944c3862ec1c4893e8bf842edc895f26a69a Mon Sep 17 00:00:00 2001
From: Stuart Sides <ssides@usgs.gov>
Date: Tue, 30 Apr 2019 10:05:18 -0700
Subject: [PATCH] Updates to LRO NAC driver without distortion model (#113)

* Modidified for LRO NAC

* Updates to LRO NAC driver without distortion model

* Update the test with the new name

* Fixed missed name change
---
 ale/config.py                     |  1 +
 ale/drivers/lro_drivers.py        | 71 ++++++++++++++++---------------
 tests/pytests/test_lro_drivers.py |  6 +--
 3 files changed, 41 insertions(+), 37 deletions(-)

diff --git a/ale/config.py b/ale/config.py
index 2aa91b1..ae3fe14 100644
--- a/ale/config.py
+++ b/ale/config.py
@@ -9,4 +9,5 @@ mdis = '/data/spice/mess-e_v_h-spice-6-v1.0/messsp_1000/extras/mk' # Messenger
 mro = '/data/spice/mro-m-spice-6-v1.0/mrosp_1000/extras/mk' # Mars Reconnaissance Orbiter
 kaguya = '/data/spice/SELENE/kernels/mk/'
 dawn = '/data/spice/dawn-m_a-spice-6-v1.0/dawnsp_1000/extras/mk'
+lro = '/usgs/cpkgs/isis3/data/lro/kernels/mk/' # LRO 
 
diff --git a/ale/drivers/lro_drivers.py b/ale/drivers/lro_drivers.py
index 22522e9..e157357 100644
--- a/ale/drivers/lro_drivers.py
+++ b/ale/drivers/lro_drivers.py
@@ -5,44 +5,12 @@ import numpy as np
 import pvl
 import spiceypy as spice
 
+from ale import config
 from ale.util import get_metakernels
 from ale.drivers.base import LineScanner, NaifSpice, Pds3Label, Driver
 
 
-class LroLrocNaifSpice(Driver, NaifSpice, LineScanner):
-    """
-    Lroc mixin class for defining snowflake Spice calls.
-    """
-
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernels = get_metakernels(years=self.start_time.year, missions='lro', versions='latest')
-        self._metakernel = metakernels['data'][0]['path']
-        return self._metakernel
-
-    @property
-    def spacecraft_name(self):
-        """
-        Spacecraft name used in various Spice calls to acquire
-        ephemeris data.
-
-        Returns
-        -------
-        : str
-          Spacecraft name
-        """
-        return "LRO"
-
-
-class LroLrocPds3NaifSpiceDriver(Pds3Label, LroLrocNaifSpice):
+class LroLrocPds3LabelNaifSpiceDriver(Driver, NaifSpice, Pds3Label, LineScanner):
     """
     Driver for reading Lroc labels. Requires a Spice mixin to acquire addtional
     ephemeris and instrument data located exclusively in spice kernels.
@@ -72,3 +40,38 @@ class LroLrocPds3NaifSpiceDriver(Pds3Label, LroLrocNaifSpice):
             return "LRO_LROCNACL"
         elif instrument == "LROC" and frame_id == "RIGHT":
             return "LRO_LROCNACR"
+        
+    @property
+    def metakernel(self):
+        """
+        Returns latest instrument metakernels
+
+        Returns
+        -------
+        : string
+          Path to latest metakernel file
+        """
+        metakernel_dir = config.lro
+
+        mks = sorted(glob(os.path.join(metakernel_dir,'*.tm')))
+        if not hasattr(self, '_metakernel'):
+            for mk in mks:
+               if str(self.start_time.year) in os.path.basename(mk):
+                   self._metakernel = mk
+        return self._metakernel
+
+    
+    @property
+    def spacecraft_name(self):
+        """
+        Spacecraft name used in various SPICE calls to acquire
+        ephemeris data.
+
+        Returns
+        -------
+        : str
+          Spacecraft name
+        """
+        return "LRO"
+
+
diff --git a/tests/pytests/test_lro_drivers.py b/tests/pytests/test_lro_drivers.py
index cfa2192..92bda58 100644
--- a/tests/pytests/test_lro_drivers.py
+++ b/tests/pytests/test_lro_drivers.py
@@ -5,7 +5,7 @@ import pytest
 
 import ale
 from ale.drivers import lro_drivers, base
-from ale.drivers.lro_drivers import LroLrocPds3NaifSpiceDriver
+from ale.drivers.lro_drivers import LroLrocPds3LabelNaifSpiceDriver
 from ale import util
 
 # 'Mock' the spice module where it is imported
@@ -15,7 +15,7 @@ simplespice = SimpleSpice()
 base.spice = simplespice
 lro_drivers.spice = simplespice
 
-LroLrocPds3NaifSpiceDriver.metakernel = get_mockkernels
+LroLrocPds3LabelNaifSpiceDriver.metakernel = get_mockkernels
 
 @pytest.fixture
 def lro_lroclabel():
@@ -112,6 +112,6 @@ def lro_lroclabel():
         """
 
 def test_lro_creation(lro_lroclabel):
-    with LroLrocPds3NaifSpiceDriver(lro_lroclabel) as m:
+    with LroLrocPds3LabelNaifSpiceDriver(lro_lroclabel) as m:
         d = m.to_dict()
         assert isinstance(d, dict)
-- 
GitLab