From f2879b3624920a0ee64ae8705d26b0cf3cf444e2 Mon Sep 17 00:00:00 2001
From: Kelvin Rodriguez <kr788@nau.edu>
Date: Thu, 2 Apr 2020 07:29:58 -0700
Subject: [PATCH] Updated Cassini ISS tests (#340)

---
 tests/pytests/data/isds/cassiniiss_isd.json | 332 ++++++++++++++++++++
 tests/pytests/test_cassini_drivers.py       |  53 +---
 2 files changed, 341 insertions(+), 44 deletions(-)
 create mode 100644 tests/pytests/data/isds/cassiniiss_isd.json

diff --git a/tests/pytests/data/isds/cassiniiss_isd.json b/tests/pytests/data/isds/cassiniiss_isd.json
new file mode 100644
index 0000000..872b187
--- /dev/null
+++ b/tests/pytests/data/isds/cassiniiss_isd.json
@@ -0,0 +1,332 @@
+{
+  "IsisCameraVersion": 1,
+  "NaifKeywords": {
+    "BODY602_RADII": [
+      256.6,
+      251.4,
+      248.3
+    ],
+    "BODY_FRAME_CODE": 10040,
+    "BODY_CODE": 602,
+    "INS-82360_P0_UV3_FOCAL_LENGTH": 2002.71,
+    "INS-82360_P60_IR1_FOCAL_LENGTH": 2002.36,
+    "INS-82360_BL1_CL2_FOCAL_LENGTH": 2002.79,
+    "INS-82360_MODE_NAME": "NOMINAL",
+    "TKFRAME_-82360_UNITS": "DEGREES",
+    "INS-82360_P60_MT1_FOCAL_LENGTH": 2002.34,
+    "INS-82360_IR2_CL2_FOCAL_LENGTH": 2002.71,
+    "INS-82360_HAL_CL2_FOCAL_LENGTH": 2002.94,
+    "INS-82360_P60_UV3_FOCAL_LENGTH": 2002.51,
+    "INS-82360_CL1_CL2_FOCAL_LENGTH": 2002.88,
+    "FRAME_-82360_NAME": "CASSINI_ISS_NAC",
+    "INS-82360_BORESIGHT": [
+      0.0,
+      0.0,
+      1.0
+    ],
+    "INS-82360_UV1_CL2_FOCAL_LENGTH": 2003.03,
+    "INS-82360_IR2_IR3_FOCAL_LENGTH": 2002.55,
+    "INS-82360_ITRANSL": [
+      0.0,
+      0.0,
+      83.33333333333333
+    ],
+    "INS-82360_ITRANSS": [
+      0.0,
+      83.33333333333333,
+      0.0
+    ],
+    "INS-82360_P0_CB1_FOCAL_LENGTH": 2002.3,
+    "INS-82360_CL1_IR3_FOCAL_LENGTH": 2002.65,
+    "INS-82360_IRP0_CB3_FOCAL_LENGTH": 2002.74,
+    "INS-82360_PIXEL_LINES": 1024.0,
+    "TKFRAME_-82360_AXES": [
+      1.0,
+      2.0,
+      3.0
+    ],
+    "INS-82360_CL1_MT3_FOCAL_LENGTH": 2002.87,
+    "TKFRAME_-82360_SPEC": "ANGLES",
+    "INS-82360_DEFAULT_FOCAL_LENGTH": 2003.44,
+    "INS-82360_P60_CB1_FOCAL_LENGTH": 2002.18,
+    "INS-82360_FOV_CROSS_ANGLE": 0.175,
+    "INS-82360_P0_BL2_FOCAL_LENGTH": 2002.19,
+    "INS-82360_FOV_CENTER_PIXEL": [
+      511.5,
+      511.5
+    ],
+    "INS-82360_RED_CL2_FOCAL_LENGTH": 2002.69,
+    "INS-82360_PLATFORM_ID": -82000.0,
+    "INS-82360_IRP0_MT2_FOCAL_LENGTH": 2002.72,
+    "INS-82360_FOV_SHAPE": "RECTANGLE",
+    "INS-82360_CL1_CB3_FOCAL_LENGTH": 2002.68,
+    "INS-82360_FOV_REF_ANGLE": 0.175,
+    "INS-82360_P60_BL2_FOCAL_LENGTH": 2002.13,
+    "INS-82360_TRIGGER_OFFSET": "0:01:00.0",
+    "INS-82360_P120_GRN_FOCAL_LENGTH": 2002.38,
+    "INS-82360_IRP0_CB2_FOCAL_LENGTH": 2002.48,
+    "FRAME_-82360_CLASS_ID": -82360.0,
+    "INS-82360_UV2_UV3_FOCAL_LENGTH": 2002.9,
+    "INS-82360_IR4_CL2_FOCAL_LENGTH": 2002.89,
+    "INS-82360_CL1_MT2_FOCAL_LENGTH": 2002.91,
+    "INS-82360_IR4_IR3_FOCAL_LENGTH": 2002.81,
+    "TKFRAME_-82360_ANGLES": [
+      -90.009796,
+      -0.033,
+      89.9148
+    ],
+    "INS-82360_FOV_FRAME": "CASSINI_ISS_NAC",
+    "INS-82360_CL1_GRN_FOCAL_LENGTH": 2002.75,
+    "INS-82360_IRP0_IR1_FOCAL_LENGTH": 2002.6,
+    "INS-82360_BORESIGHT_SAMPLE": 512.5,
+    "FRAME_-82360_CENTER": -82.0,
+    "INS-82360_P120_IR1_FOCAL_LENGTH": 2002.39,
+    "INS-82360_FOV_CLASS_SPEC": "ANGLES",
+    "INS-82360_FOV_REF_VECTOR": [
+      1.0,
+      0.0,
+      0.0
+    ],
+    "INS-82360_P120_MT1_FOCAL_LENGTH": 2002.54,
+    "TKFRAME_-82360_RELATIVE": "CASSINI_SC_COORD",
+    "INS-82360_CL1_CB2_FOCAL_LENGTH": 2002.66,
+    "INS-82360_P120_UV3_FOCAL_LENGTH": 2002.71,
+    "INS-82360_PIXEL_PITCH": 0.012,
+    "INS-82360_FOCAL_LENGTH": 2003.44,
+    "INS-82360_IR2_IR1_FOCAL_LENGTH": 2002.56,
+    "INS-82360_RED_GRN_FOCAL_LENGTH": 2002.61,
+    "INS-82360_CL1_IR1_FOCAL_LENGTH": 2002.74,
+    "INS-82360_P120_CB1_FOCAL_LENGTH": 2002.28,
+    "INS-82360_CL1_MT1_FOCAL_LENGTH": 2002.88,
+    "FRAME_-82360_CLASS": 4.0,
+    "INS-82360_BORESIGHT_LINE": 512.5,
+    "INS-82360_PIXEL_SIZE": 12.0,
+    "INS-82360_CL1_UV3_FOCAL_LENGTH": 2003.09,
+    "INS-82360_IFOV": 6.0,
+    "INS-82360_TRANSX": [
+      0.0,
+      0.012,
+      0.0
+    ],
+    "INS-82360_TRANSY": [
+      0.0,
+      0.0,
+      0.012
+    ],
+    "INS-82360_F/NUMBER": 10.5,
+    "INS-82360_UV2_CL2_FOCAL_LENGTH": 2002.91,
+    "INS-82360_P0_GRN_FOCAL_LENGTH": 2002.38,
+    "INS-82360_CK_REFERENCE_ID": 1.0,
+    "INS-82360_CK_FRAME_ID": -915240.0,
+    "INS-82360_P120_BL2_FOCAL_LENGTH": 2002.11,
+    "INS-82360_PIXEL_SAMPLES": 1024.0,
+    "INS-82360_RED_IR1_FOCAL_LENGTH": 2002.48,
+    "INS-82360_CL1_CB1_FOCAL_LENGTH": 2002.66,
+    "INS-82360_FL_UNCERTAINTY": 0.03,
+    "INS-82360_P60_GRN_FOCAL_LENGTH": 2002.28,
+    "INS-82360_CYCLE_DURATION": "0:01:00.0",
+    "INS-82360_WAVELENGTH_RANGE": [
+      200.0,
+      1100.0
+    ],
+    "INS-82360_FOV_ANGLE_UNITS": "DEGREES",
+    "INS-82360_K1": 8e-06,
+    "INS-82360_P0_IR1_FOCAL_LENGTH": 2002.35,
+    "INS-82360_CL1_BL2_FOCAL_LENGTH": 2002.37,
+    "INS-82360_IRP0_IR3_FOCAL_LENGTH": 2002.48,
+    "INS-82360_CCD_CENTER": [
+      512.5,
+      512.5
+    ],
+    "INS-82360_P0_MT1_FOCAL_LENGTH": 2002.4,
+    "INS_-82360_FRAME_ID": 14082360.0,
+    "INS-82360_IRP0_MT3_FOCAL_LENGTH": 2002.72,
+    "BODY602_CCOEF": [
+      0.0,
+      0.0,
+      0.0015497999999999998
+    ],
+    "BODY602_POLE_DEC": [
+      83.52,
+      -0.004,
+      0.0
+    ],
+    "BODY602_POLE_RA": [
+      40.66,
+      -0.036,
+      0.0
+    ],
+    "BODY602_PM": [
+      6.32,
+      262.7318996,
+      0.0
+    ],
+    "BODY602_JCOEF": [
+      0.0,
+      0.0054352
+    ],
+    "BODY602_LONG_AXIS": 0.0,
+    "BODY602_GM/PRIMARY": 1.29181e-07,
+    "BODY602_GM": 7.211777492985
+  },
+  "detector_sample_summing": 1,
+  "detector_line_summing": 1,
+  "focal_length_model": {
+    "focal_length": 2003.09
+  },
+  "detector_center": {
+    "line": 512,
+    "sample": 512
+  },
+  "starting_detector_line": 0,
+  "starting_detector_sample": 0,
+  "focal2pixel_lines": [
+    0.0,
+    0.0,
+    83.33333333333333
+  ],
+  "focal2pixel_samples": [
+    0.0,
+    83.33333333333333,
+    0.0
+  ],
+  "optical_distortion": {
+    "radial": {
+      "coefficients": [
+        0,
+        -8e-06,
+        0
+      ]
+    }
+  },
+  "image_lines": 1024,
+  "image_samples": 1024,
+  "name_platform": "CASSINI ORBITER",
+  "name_sensor": "IMAGING SCIENCE SUBSYSTEM - NARROW ANGLE",
+  "reference_height": {
+    "maxheight": 1000,
+    "minheight": -1000,
+    "unit": "m"
+  },
+  "name_model": "USGS_ASTRO_FRAME_SENSOR_MODEL",
+  "center_ephemeris_time": 376938208.24072826,
+  "radii": {
+    "semimajor": 256.6,
+    "semiminor": 248.3,
+    "unit": "km"
+  },
+  "InstrumentPointing": {
+    "TimeDependentFrames": [
+      -82000,
+      1
+    ],
+    "CkTableStartTime": 376938208.24072826,
+    "CkTableEndTime": 376938208.24072826,
+    "CkTableOriginalSize": 1,
+    "EphemerisTimes": [
+      376938208.24072826
+    ],
+    "Quaternions": [
+      [
+        -0.714592970784935,
+        0.21489250965350096,
+        0.44184670438419815,
+        -0.4979453636940545
+      ]
+    ],
+    "AngularVelocity": [
+      [
+        -0.0007574572640014708,
+        -0.0003505925165897519,
+        -0.00010610139650303626
+      ]
+    ],
+    "ConstantFrames": [
+      14082360,
+      -82360,
+      -82000
+    ],
+    "ConstantRotation": [
+      -0.0014870197280318354,
+      -0.00017182872562465645,
+      0.9999988796229811,
+      -0.9999987285211891,
+      -0.0005757037366556639,
+      -0.0014871184258905545,
+      0.0005759586213144874,
+      -0.999999819520032,
+      -0.00017097242433417037
+    ]
+  },
+  "BodyRotation": {
+    "TimeDependentFrames": [
+      10040,
+      1
+    ],
+    "CkTableStartTime": 376938208.24072826,
+    "CkTableEndTime": 376938208.24072826,
+    "CkTableOriginalSize": 1,
+    "EphemerisTimes": [
+      376938208.24072826
+    ],
+    "Quaternions": [
+      [
+        -0.49726210411698374,
+        0.01884225276113552,
+        0.0532896313700967,
+        0.8657572318545625
+      ]
+    ],
+    "AngularVelocity": [
+      [
+        4.544323197605555e-06,
+        3.902625629848413e-06,
+        5.273422216698314e-05
+      ]
+    ]
+  },
+  "InstrumentPosition": {
+    "SpkTableStartTime": 376938208.24072826,
+    "SpkTableEndTime": 376938208.24072826,
+    "SpkTableOriginalSize": 1,
+    "EphemerisTimes": [
+      376938208.24072826
+    ],
+    "Positions": [
+      [
+        21961.77283021467,
+        10151.980187116338,
+        -3287.1339343305876
+      ]
+    ],
+    "Velocities": [
+      [
+        5.455579135911339,
+        -3.302834463297056,
+        -0.20371606661791924
+      ]
+    ]
+  },
+  "SunPosition": {
+    "SpkTableStartTime": 376938208.24072826,
+    "SpkTableEndTime": 376938208.24072826,
+    "SpkTableOriginalSize": 1,
+    "EphemerisTimes": [
+      376938208.24072826
+    ],
+    "Positions": [
+      [
+        1342712164.7010403,
+        521645736.9735198,
+        157522069.3546536
+      ]
+    ],
+    "Velocities": [
+      [
+        -15.573457955043763,
+        5.743795762971043,
+        4.859416365721263
+      ]
+    ]
+  }
+}
diff --git a/tests/pytests/test_cassini_drivers.py b/tests/pytests/test_cassini_drivers.py
index ca1173a..27a132a 100644
--- a/tests/pytests/test_cassini_drivers.py
+++ b/tests/pytests/test_cassini_drivers.py
@@ -6,50 +6,12 @@ import numpy as np
 from ale.drivers import co_drivers
 import unittest
 from unittest.mock import patch
-
-from conftest import get_image_label, get_image_kernels, convert_kernels, compare_dicts
+import json
+from conftest import get_image_label, get_image_kernels, get_isd, convert_kernels, compare_dicts
 
 from ale.drivers.co_drivers import CassiniIssPds3LabelNaifSpiceDriver
 from conftest import get_image_kernels, convert_kernels, get_image_label
 
-@pytest.fixture()
-def usgscsm_compare_dict():
-    return {'radii':
-             {'semimajor': 256.6,
-               'semiminor': 248.3,
-               'unit': 'km'},
-            'sensor_position':
-              {'positions': np.array([[-2256845.0758612, -24304022.50656576, -639184.92761627]]),
-               'velocities': np.array([[-6889.88091886, -2938.52964751, 21.84486935]]),
-               'unit': 'm'},
-            'sun_position':
-              {'positions': [np.array([-2.30750862e+11, -1.39662303e+12, 3.09841240e+11])],
-               'velocities': [np.array([-7.41107317e+07, 1.22577658e+07, 3.91731010e+03])],
-               'unit': 'm'},
-            'sensor_orientation':
-              {'quaternions': np.array([[-0.21183452, -0.66567547, -0.69966839,  0.14988809]])},
-            'detector_sample_summing': 1,
-            'detector_line_summing': 1,
-            'focal_length_model': {'focal_length': 2003.09},
-            'detector_center': {'line': 512, 'sample': 512},
-            'starting_detector_line': 0,
-            'starting_detector_sample': 0,
-            'focal2pixel_lines': [0.0, 0.0, 83.33333333333333],
-            'focal2pixel_samples': [0.0, 83.33333333333333, 0.0],
-            'optical_distortion':
-              {'radial':
-                {'coefficients': [0, -8e-06, 0]}},
-            'image_lines': 1024,
-            'image_samples': 1024,
-            'name_platform': 'CASSINI ORBITER',
-            'name_sensor': 'IMAGING SCIENCE SUBSYSTEM - NARROW ANGLE',
-            'reference_height':
-              {'maxheight': 1000,
-               'minheight': -1000,
-               'unit': 'm'},
-            'name_model': 'USGS_ASTRO_FRAME_SENSOR_MODEL',
-            'center_ephemeris_time': 376938208.24072826}
-
 @pytest.fixture()
 def test_kernels(scope="module", autouse=True):
     kernels = get_image_kernels("N1702360370_1")
@@ -58,11 +20,14 @@ def test_kernels(scope="module", autouse=True):
     for kern in binary_kernels:
         os.remove(kern)
 
-def test_cassini_load(test_kernels, usgscsm_compare_dict):
+def test_load(test_kernels):
     label_file = get_image_label("N1702360370_1")
-    usgscsm_isd = ale.load(label_file, props={'kernels': test_kernels}, formatter='usgscsm')
-    print(usgscsm_isd)
-    assert compare_dicts(usgscsm_isd, usgscsm_compare_dict) == []
+    compare_dict = get_isd("cassiniiss")
+
+    isd_str = ale.loads(label_file, props={'kernels': test_kernels})
+    isd_obj = json.loads(isd_str)
+    print(json.dumps(isd_obj, indent=2))
+    assert compare_dicts(isd_obj, compare_dict) == []
 
 # ========= Test cassini pds3label and naifspice driver =========
 class test_cassini_pds3_naif(unittest.TestCase):
-- 
GitLab