From d575b866371d230482a9e24a76fc6e96323c1b35 Mon Sep 17 00:00:00 2001
From: Adam Paquette <acpaquette@usgs.gov>
Date: Fri, 13 Nov 2020 17:42:03 -0700
Subject: [PATCH] Driver updates to get cassini, messenger, and viking working
 with isislabel isisspice data

---
 ale/base/label_isis.py        |  1 +
 ale/drivers/co_drivers.py     | 17 ++++++++++++++++-
 ale/drivers/mess_drivers.py   |  8 ++++----
 ale/drivers/viking_drivers.py | 15 +++++++++++++++
 4 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/ale/base/label_isis.py b/ale/base/label_isis.py
index 66847e7..467a995 100644
--- a/ale/base/label_isis.py
+++ b/ale/base/label_isis.py
@@ -11,6 +11,7 @@ class IsisLabel():
             if isinstance(self._file, pvl.PVLModule):
                 self._label = self._file
             grammar = pvl.grammar.ISISGrammar()
+            grammar.comments+=(("#", "\n"), )
             try:
                 self._label = pvl.loads(self._file, grammar=grammar)
             except Exception:
diff --git a/ale/drivers/co_drivers.py b/ale/drivers/co_drivers.py
index eec96dc..106f38c 100644
--- a/ale/drivers/co_drivers.py
+++ b/ale/drivers/co_drivers.py
@@ -7,8 +7,10 @@ import pvl
 import spiceypy as spice
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
+from ale.base.data_isis import IsisSpice
 from ale.base.label_pds3 import Pds3Label
-from ale.base.type_distortion import RadialDistortion
+from ale.base.label_isis import IsisLabel
+from ale.base.type_distortion import RadialDistortion, NoDistortion
 from ale.base.type_sensor import Framer
 
 from ale.rotation import ConstantRotation
@@ -325,3 +327,16 @@ class CassiniIssPds3LabelNaifSpiceDriver(Framer, Pds3Label, NaifSpice, RadialDis
                 self._frame_chain.add_edge(rotation=rotation)
 
         return self._frame_chain
+
+class CassiniIssIsisLabelIsisSpiceDriver(Framer, IsisLabel, IsisSpice, NoDistortion, Driver):
+    @property
+    def sensor_name(self):
+        """
+        Returns the name of the instrument
+
+        Returns
+        -------
+        : str
+          Name of the sensor
+        """
+        return self.label['IsisCube']['Instrument']['SpacecraftName']
diff --git a/ale/drivers/mess_drivers.py b/ale/drivers/mess_drivers.py
index 2dc561d..0672ccd 100644
--- a/ale/drivers/mess_drivers.py
+++ b/ale/drivers/mess_drivers.py
@@ -10,6 +10,7 @@ from ale.base.data_naif import NaifSpice
 from ale.base.label_pds3 import Pds3Label
 from ale.base.label_isis import IsisLabel
 from ale.base.type_sensor import Framer
+from ale.base.type_distortion import NoDistortion
 from ale.base.data_isis import IsisSpice
 
 ID_LOOKUP = {
@@ -18,7 +19,7 @@ ID_LOOKUP = {
 }
 
 
-class MessengerMdisIsisLabelIsisSpiceDriver(Framer, IsisLabel, IsisSpice, Driver):
+class MessengerMdisIsisLabelIsisSpiceDriver(Framer, IsisLabel, IsisSpice, NoDistortion, Driver):
     @property
     def spacecraft_name(self):
         """
@@ -72,8 +73,7 @@ class MessengerMdisIsisLabelIsisSpiceDriver(Framer, IsisLabel, IsisSpice, Driver
         return ID_LOOKUP[super().instrument_id]
 
 
-
-class MessengerMdisPds3NaifSpiceDriver(Framer, Pds3Label, NaifSpice, Driver):
+class MessengerMdisPds3NaifSpiceDriver(Framer, Pds3Label, NaifSpice, NoDistortion, Driver):
     """
     Driver for reading MDIS PDS3 labels. Requires a Spice mixin to acquire addtional
     ephemeris and instrument data located exclusively in spice kernels.
@@ -249,7 +249,7 @@ class MessengerMdisPds3NaifSpiceDriver(Framer, Pds3Label, NaifSpice, Driver):
         return spice.gdpool('INS{}_PIXEL_PITCH'.format(self.ikid), 0, 1)
 
 
-class MessengerMdisIsisLabelNaifSpiceDriver(IsisLabel, NaifSpice, Framer, Driver):
+class MessengerMdisIsisLabelNaifSpiceDriver(IsisLabel, NaifSpice, Framer, NoDistortion, Driver):
     """
     Driver for reading MDIS ISIS3 Labels. These are Labels that have been ingested
     into ISIS from PDS EDR images. Any SPCIE data attached by the spiceinit application
diff --git a/ale/drivers/viking_drivers.py b/ale/drivers/viking_drivers.py
index 74c2eb4..254d1dc 100644
--- a/ale/drivers/viking_drivers.py
+++ b/ale/drivers/viking_drivers.py
@@ -2,8 +2,10 @@ import spiceypy as spice
 
 import ale
 from ale.base.data_naif import NaifSpice
+from ale.base.data_isis import IsisSpice
 from ale.base.label_isis import IsisLabel
 from ale.base.type_sensor import Framer
+from ale.base.type_distortion import NoDistortion
 from ale.base.base import Driver
 
 class VikingIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Driver):
@@ -80,3 +82,16 @@ class VikingIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Driver):
         offset2 = 1.0 / 64.0 * 4.48
 
         return ephemeris_start_time + offset1 + offset2
+
+class VikingIsisLabelIsisSpiceDriver(Framer, IsisLabel, IsisSpice, NoDistortion, Driver):
+    @property
+    def sensor_name(self):
+        """
+        Returns the name of the instrument
+
+        Returns
+        -------
+        : str
+          Name of the sensor
+        """
+        return self.label['IsisCube']['Instrument']['SpacecraftName']
-- 
GitLab