From fe99d2b646d189d2f313d58b464c0b134f30c457 Mon Sep 17 00:00:00 2001
From: Adam Paquette <acpaquette@usgs.gov>
Date: Sat, 12 Oct 2019 13:26:03 -0700
Subject: [PATCH] Added lookup table to dawn driver and reordered drivers for
 spiceinit

---
 ale/base/data_naif.py       | 25 +++++++++++++++----------
 ale/drivers/__init__.py     |  2 +-
 ale/drivers/dawn_drivers.py |  7 ++++++-
 tests/pytests/test_load.py  |  2 +-
 4 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/ale/base/data_naif.py b/ale/base/data_naif.py
index 8527b3c..549ff7e 100644
--- a/ale/base/data_naif.py
+++ b/ale/base/data_naif.py
@@ -295,14 +295,20 @@ class NaifSpice():
         : (sun_positions, sun_velocities)
           a tuple containing a list of sun positions, a list of sun velocities
         """
-        sun_state, _ = spice.spkezr("SUN",
-                                     self.center_ephemeris_time,
-                                     self.reference_frame,
-                                     'LT+S',
-                                     self.target_name)
-        positions = 1000 * np.asarray([sun_state[:3]])
-        velocities = 1000 * np.asarray([sun_state[3:6]])
-        times = np.asarray([self.center_ephemeris_time])
+        times = [self.center_ephemeris_time]
+        positions = []
+        velocities = []
+
+        for time in times:
+            sun_state, _ = spice.spkezr("SUN",
+                                         time,
+                                         self.reference_frame,
+                                         'LT+S',
+                                         self.target_name)
+            positions.append(sun_state[:3])
+            velocities.append(sun_state[3:6])
+        positions = 1000 * np.asarray(positions)
+        velocities = 1000 * np.asarray(velocities)
 
         return positions, velocities, times
 
@@ -367,7 +373,7 @@ class NaifSpice():
                                             self.reference_frame,
                                             self.light_time_correction,
                                             observer)
-       
+
                 if self.swap_observer_target:
                     pos.append(-state[:3])
                     vel.append(-state[3:])
@@ -526,4 +532,3 @@ class NaifSpice():
             self._naif_keywords = {**self._naif_keywords, **util.query_kernel_pool(f"*{self.ikid}*"),  **util.query_kernel_pool(f"*{self.target_id}*")}
 
         return self._naif_keywords
-
diff --git a/ale/drivers/__init__.py b/ale/drivers/__init__.py
index b60ebe9..439637a 100644
--- a/ale/drivers/__init__.py
+++ b/ale/drivers/__init__.py
@@ -28,7 +28,7 @@ __formatters__ = {'usgscsm': to_usgscsm,
                   'isis': to_isis}
 
 def sort_drivers(drivers=[]):
-    return list(sorted(drivers, key=lambda x:IsisSpice in x.__bases__, reverse=True))
+    return list(sorted(drivers, key=lambda x:IsisSpice in x.__bases__, reverse=False))
 
 class AleJsonEncoder(json.JSONEncoder):
     def default(self, obj):
diff --git a/ale/drivers/dawn_drivers.py b/ale/drivers/dawn_drivers.py
index 48d3a4a..163dd2f 100644
--- a/ale/drivers/dawn_drivers.py
+++ b/ale/drivers/dawn_drivers.py
@@ -10,6 +10,11 @@ from ale.base.data_naif import NaifSpice
 from ale.base.label_pds3 import Pds3Label
 from ale.base.type_sensor import Framer
 
+ID_LOOKUP = {
+    "FC1" : "DAWN_FC1",
+    "FC2" : "DAWN_FC2"
+}
+
 class DawnFcPds3NaifSpiceDriver(Framer, Pds3Label, NaifSpice, Driver):
     """
     Dawn driver for generating an ISD from a Dawn PDS3 image.
@@ -32,7 +37,7 @@ class DawnFcPds3NaifSpiceDriver(Framer, Pds3Label, NaifSpice, Driver):
         instrument_id = super().instrument_id
         filter_number = self.filter_number
 
-        return "DAWN_{}_FILTER_{}".format(instrument_id, filter_number)
+        return "{}_FILTER_{}".format(ID_LOOKUP[instrument_id], filter_number)
 
     @property
     def label(self):
diff --git a/tests/pytests/test_load.py b/tests/pytests/test_load.py
index 118af7d..0eb70fe 100644
--- a/tests/pytests/test_load.py
+++ b/tests/pytests/test_load.py
@@ -22,7 +22,7 @@ def mess_kernels():
 def test_priority(tmpdir, monkeypatch):
     drivers = [type('FooNaifSpice', (NaifSpice,), {}), type('BarIsisSpice', (IsisSpice,), {}), type('BazNaifSpice', (NaifSpice,), {}), type('FubarIsisSpice', (IsisSpice,), {})]
     sorted_drivers = sort_drivers(drivers)
-    assert all([IsisSpice in klass.__bases__ for klass in sorted_drivers[:2]])
+    assert all([IsisSpice in klass.__bases__ for klass in sorted_drivers[2:]])
 
 def test_mess_load(mess_kernels):
     updated_kernels = mess_kernels
-- 
GitLab