diff --git a/ale/base/data_naif.py b/ale/base/data_naif.py index 7056c3253d59953b7a935f3ea2dc45cbb7e1a736..5fe0baa0a57bd002fb6fc228cb94e28cd0cbfe4a 100644 --- a/ale/base/data_naif.py +++ b/ale/base/data_naif.py @@ -426,6 +426,7 @@ class NaifSpice(): """ return float(spice.gdpool('INS{}_BORESIGHT_LINE'.format(self.ikid), 0, 1)[0]) + @property def isis_naif_keywords(self): """ @@ -438,11 +439,7 @@ class NaifSpice(): naif_keywords['BODY{}_RADII'.format(self.target_id)] = self.target_body_radii naif_keywords['BODY_FRAME_CODE'] = self.target_frame_id - naif_keywords['INS{}_PIXEL_SIZE'.format(self.ikid)] = self.pixel_size - naif_keywords['INS{}_ITRANSL'.format(self.ikid)] = self.focal2pixel_lines - naif_keywords['INS{}_ITRANSS'.format(self.ikid)] = self.focal2pixel_samples - naif_keywords['INS{}_FOCAL_LENGTH'.format(self.ikid)] = self.focal_length - naif_keywords['INS{}_BORESIGHT_SAMPLE'.format(self.ikid)] = self.detector_center_sample + 0.5 - naif_keywords['INS{}_BORESIGHT_LINE'.format(self.ikid)] = self.detector_center_line + 0.5 + naif_keywords['BODY_CODE'] = self.target_id + naif_keywords = {**naif_keywords, **util.query_kernel_pool(f"*{self.ikid}*")} return naif_keywords diff --git a/src/ale.cpp b/src/ale.cpp index ca1f4dc1e83e2aba40f2a4f0ff7bd3547630f5b4..a266f3ac4de1ca09c6856589587aa4c113d66c1b 100644 --- a/src/ale.cpp +++ b/src/ale.cpp @@ -387,9 +387,9 @@ namespace ale { Py_DECREF(pStringFileName); Py_DECREF(pStringProps); Py_DECREF(pStringFormatter); - + if(!pResult) { - throw invalid_argument(getPyTraceback()); + throw invalid_argument("No Valid instrument found for label."); } PyObject *pResultStr = PyObject_Str(pResult); diff --git a/tests/pytests/test_mdis_drivers.py b/tests/pytests/test_mdis_drivers.py index 0f787905f82a5184e55c72e39c178f47788bb99d..3bc3135804cbe0a220c71172e16e0fca01e122ab 100644 --- a/tests/pytests/test_mdis_drivers.py +++ b/tests/pytests/test_mdis_drivers.py @@ -189,19 +189,20 @@ def test_isis_naif_keywords(driver): expected_keywords = { 'BODY199_RADII' : driver.target_body_radii, 'BODY_FRAME_CODE' : 10011, - 'INS-236820_PIXEL_SIZE' : 0.014, + 'INS-236820_PIXEL_PITCH' : 0.014, 'INS-236820_ITRANSL' : [0.0, 0.0, 71.42857143], 'INS-236820_ITRANSS' : [0.0, 71.42857143, 0.0], - 'INS-236820_FOCAL_LENGTH' : 549.5535053027719, + 'INS-236820_FOCAL_LENGTH' : 549.1178195372703, 'INS-236820_BORESIGHT_SAMPLE' : 512.5, 'INS-236820_BORESIGHT_LINE' : 512.5 } - assert set(driver.isis_naif_keywords.keys()) == set(expected_keywords.keys()) - for key, value in driver.isis_naif_keywords.items(): - if isinstance(value, np.ndarray): - np.testing.assert_almost_equal(value, expected_keywords[key]) + print(driver.isis_naif_keywords.keys()) + assert set(expected_keywords.keys()).issubset(set(driver.isis_naif_keywords.keys())) + for key, value in expected_keywords.items(): + if isinstance(value, np.ndarray) or isinstance(value, list): + np.testing.assert_almost_equal(value, driver.isis_naif_keywords[key]) else: - assert value == expected_keywords[key] + assert value == driver.isis_naif_keywords[key] def test_sensor_model_version(driver): assert driver.sensor_model_version == 2 diff --git a/tests/pytests/test_mro_drivers.py b/tests/pytests/test_mro_drivers.py index 7f8aaf1f6e959b17f08d99e300f2c8b9798e6226..39bde0f4295deb3a338f788b41f1c97611f05f6f 100644 --- a/tests/pytests/test_mro_drivers.py +++ b/tests/pytests/test_mro_drivers.py @@ -66,14 +66,48 @@ def usgscsm_compare_dict(): def isis_compare_dict(): return { 'CameraVersion': 1, - 'NaifKeywords': {'BODY499_RADII': [3396.19, 3396.19, 3376.2], - 'BODY_FRAME_CODE': 10014, - 'INS-74021_PIXEL_SIZE': 7e-06, - 'INS-74021_ITRANSL': [0.0, 142.85714285714, 0.0], - 'INS-74021_ITRANSS': [0.0, 0.0, 142.85714285714], - 'INS-74021_FOCAL_LENGTH': 352.9271664, - 'INS-74021_BORESIGHT_SAMPLE': 2543.46099, - 'INS-74021_BORESIGHT_LINE': 0.9304425270000001}, + 'NaifKeywords': { + 'BODY499_RADII': [3396.19, 3396.19, 3376.2], + 'BODY_FRAME_CODE': 10014, + 'BODY_CODE': 499, + 'INS-74021_FOV_ANGLE_UNITS': 'DEGREES', + 'TKFRAME_-74021_UNITS': 'DEGREES', + 'INS-74021_FOV_ANGULAR_SIZE': [5.73, 0.001146], + 'INS-74021_PIXEL_LINES': 1.0, + 'TKFRAME_-74021_ANGLES': [0.0, 0.0, 0.0], + 'INS-74021_IFOV': [2e-05, 2e-05], + 'FRAME_-74021_CENTER': -74.0, + 'INS-74021_F/RATIO': 3.25, + 'INS-74021_PLATFORM_ID': -74000.0, + 'INS-74021_CCD_CENTER': [2500.5, 0.5], + 'INS-74021_PIXEL_SAMPLES': 5000.0, + 'INS-74021_FOCAL_LENGTH': 352.9271664, + 'INS-74021_FOV_CROSS_ANGLE': 0.00057296, + 'INS-74021_TRANSX': [0.0, 0.0, 0.007], + 'INS-74021_FOV_CLASS_SPEC': 'ANGLES', + 'INS-74021_TRANSY': [0.0, 0.007, 0.0], + 'INS-74021_FOV_REF_VECTOR': [0.0, 1.0, 0.0], + 'INS-74021_BORESIGHT': [0.0, 0.0, 1.0], + 'FRAME_-74021_NAME': 'MRO_CTX', + 'INS-74021_PIXEL_PITCH': 0.007, + 'TKFRAME_-74021_AXES': [1.0, 2.0, 3.0], + 'TKFRAME_-74021_SPEC': 'ANGLES', + 'INS-74021_BORESIGHT_LINE': 0.430442527, + 'INS-74021_FOV_SHAPE': 'RECTANGLE', + 'INS-74021_BORESIGHT_SAMPLE': 2543.46099, + 'FRAME_-74021_CLASS': 4.0, + 'INS-74021_CK_FRAME_ID': -74000.0, + 'INS-74021_ITRANSL': [0.0, 142.85714285714, 0.0], + 'INS-74021_FOV_REF_ANGLE': 2.86478898, + 'INS-74021_ITRANSS': [0.0, 0.0, 142.85714285714], + 'FRAME_-74021_CLASS_ID': -74021.0, + 'INS-74021_OD_K': [-0.0073433925920054505, + 2.8375878636241697e-05, + 1.2841989124027099e-08], + 'INS-74021_FOV_FRAME': 'MRO_CTX', + 'INS-74021_CK_REFERENCE_ID': -74900.0, + 'TKFRAME_-74021_RELATIVE': 'MRO_CTX_BASE', + 'INS-74021_PIXEL_SIZE': [0.007, 0.007]}, 'InstrumentPointing': {'TimeDependentFrames': [-74021, 1], 'CkTableStartTime': 297088762.24158406, 'CkTableEndTime': 297088762.9923841, @@ -126,7 +160,7 @@ def isis_compare_dict(): [-373.3380528336456, 11812.79727998301, 6230.144788806889], [-373.4652557832692, 11812.764526050134, 6230.199268400618], [-373.59245860358607, 11812.731770801367, 6230.253747251377], - [-373.71966146848814, 11812.69901419193, 6230.308225433648], + [-373.71966146848814, 11812.69901419193, 6230.308225433648], [-373.846864247526, 11812.666256255417, 6230.362702891557]]}} @pytest.fixture(scope='module')