Loading ale/base/data_naif.py +3 −6 Original line number Diff line number Diff line Loading @@ -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): """ Loading @@ -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 src/ale.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ namespace ale { Py_DECREF(pStringFormatter); if(!pResult) { throw invalid_argument(getPyTraceback()); throw invalid_argument("No Valid instrument found for label."); } PyObject *pResultStr = PyObject_Str(pResult); Loading tests/pytests/test_mdis_drivers.py +8 −7 Original line number Diff line number Diff line Loading @@ -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 Loading tests/pytests/test_mro_drivers.py +43 −9 Original line number Diff line number Diff line Loading @@ -66,14 +66,48 @@ def usgscsm_compare_dict(): def isis_compare_dict(): return { 'CameraVersion': 1, 'NaifKeywords': {'BODY499_RADII': [3396.19, 3396.19, 3376.2], '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], '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, 'INS-74021_BORESIGHT_LINE': 0.9304425270000001}, '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, Loading Loading
ale/base/data_naif.py +3 −6 Original line number Diff line number Diff line Loading @@ -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): """ Loading @@ -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
src/ale.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ namespace ale { Py_DECREF(pStringFormatter); if(!pResult) { throw invalid_argument(getPyTraceback()); throw invalid_argument("No Valid instrument found for label."); } PyObject *pResultStr = PyObject_Str(pResult); Loading
tests/pytests/test_mdis_drivers.py +8 −7 Original line number Diff line number Diff line Loading @@ -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 Loading
tests/pytests/test_mro_drivers.py +43 −9 Original line number Diff line number Diff line Loading @@ -66,14 +66,48 @@ def usgscsm_compare_dict(): def isis_compare_dict(): return { 'CameraVersion': 1, 'NaifKeywords': {'BODY499_RADII': [3396.19, 3396.19, 3376.2], '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], '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, 'INS-74021_BORESIGHT_LINE': 0.9304425270000001}, '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, Loading