diff --git a/ale/drivers/base.py b/ale/drivers/base.py index d424540074067502261c94508d4f52aaf12d7476..050ed24852cb85894f4c9ae2538caa5decbf8cb3 100644 --- a/ale/drivers/base.py +++ b/ale/drivers/base.py @@ -111,6 +111,10 @@ class PDS3(): self._sensor_velocity = eph_rates self._sensor_position = eph + @property + def focal_plane_tempature(self): + return self.label['FOCAL_PLANE_TEMPERATURE'].value + @property def label(self): if not hasattr(self, "_label"): @@ -159,6 +163,10 @@ class PDS3(): def _target_id(self): return spice.bodn2c(self.label['TARGET_NAME']) + @property + def focal_epsilon(self): + return float(spice.gdpool('INS{}_FL_UNCERTAINTY'.format(self.ikid), 0, 1)[0]) + @property def starting_ephemeris_time(self): if not hasattr(self, '_starting_ephemeris_time'): diff --git a/ale/drivers/cassini_driver.py b/ale/drivers/cassini_driver.py index c66b8ad31994db79a8fbf558dbe92b7e75c75a24..ebbb670fb19a8ebd17cecbda0253b34789cfeb19 100644 --- a/ale/drivers/cassini_driver.py +++ b/ale/drivers/cassini_driver.py @@ -30,7 +30,7 @@ class CassiniISS(Framer): @property def instrument_id(self): - return self.id_lookup[self._label['INSTRUMENT_ID']] + return self.id_lookup[self.label['INSTRUMENT_ID']] @property def focal_epsilon(self): @@ -54,7 +54,7 @@ class CassiniISS(Framer): @property def _exposure_duration(self): # labels do not specify a unit explicitly - return self._label['EXPOSURE_DURATION'] * 0.001 # Scale to seconds + return self.label['EXPOSURE_DURATION'] * 0.001 # Scale to seconds @property def odtk(self): diff --git a/ale/drivers/keys.py b/ale/drivers/keys.py index 0b797589cb84db7ffe024289104d90676d13adaa..94cf987c7e744dcb3362fc59015155a94f8a0165 100644 --- a/ale/drivers/keys.py +++ b/ale/drivers/keys.py @@ -1,19 +1,15 @@ base = { - 'name_model' + 'name_model', 'center_ephemeris_time', 'detector_center', 'detector_line_summing', 'detector_sample_summing', - 'dt_ephemeris', - 'dt_quaternion', 'ending_ephemeris_time', 'exposure_duration', 'focal2pixel_lines', 'focal2pixel_samples', 'focal_epsilon', 'focal_length', - 'focal_plane_tempature', - 'id_lookup', 'ikid', 'image_lines', 'image_samples', @@ -57,6 +53,10 @@ framer = { 'filter_number', } +temp_dep_focal_legth = { + 'focal_plane_tempature' +} + linescanner = { 'line_exposure_duration', 'line_scan_rate', diff --git a/ale/drivers/lro_driver.py b/ale/drivers/lro_driver.py index 14a54cad9128656ada4b3698a8ad15dc2b67d598..5654f672f993a8779a17326cf8af1713b90fc8a9 100644 --- a/ale/drivers/lro_driver.py +++ b/ale/drivers/lro_driver.py @@ -11,7 +11,7 @@ from ale.drivers import keys class LrocSpice(Spice, LineScanner): - required_keys = keys.base | keys.framer + required_keys = keys.base | keys.linescanner @property def metakernel(self): @@ -31,10 +31,10 @@ class LroPds3Driver(PDS3, LrocSpice): Ignores Wide Angle for now """ - instrument = self._label.get("INSTRUMENT_ID") + instrument = self.label.get("INSTRUMENT_ID") # should be left or right - frame_id = self._label.get("FRAME_ID") + frame_id = self.label.get("FRAME_ID") if instrument == "LROC" and frame_id == "LEFT": return "LRO_LROCNACL" diff --git a/ale/drivers/mdis_driver.py b/ale/drivers/mdis_driver.py index c44a64bca996dcbf7bdb6b91e350a2d7dc4a418a..89770feb9eb99448e6acb01d409a3daa8e3f70d5 100644 --- a/ale/drivers/mdis_driver.py +++ b/ale/drivers/mdis_driver.py @@ -18,7 +18,7 @@ class MdisSpice(Spice, Framer): 'MERCURY DUAL IMAGING SYSTEM WIDE ANGLE CAMERA':'MSGR_MDIS_WAC' } - required_keys = keys.base | keys.framer | keys.filter | keys.transverse_distortion + required_keys = keys.base | keys.framer | keys.filter | keys.transverse_distortion | keys.temp_dep_focal_legth @property def metakernel(self): @@ -43,10 +43,6 @@ class MdisSpice(Spice, Framer): # eval at the focal_plane_tempature return f_t(self.focal_plane_tempature) - @property - def focal_epsilon(self): - return float(spice.gdpool('INS{}_FL_UNCERTAINTY'.format(self.ikid), 0, 1)[0]) - @property def starting_detector_sample(self): return int(spice.gdpool('INS{}_FPUBIN_START_SAMPLE'.format(self.ikid), 0, 1)[0]) @@ -59,11 +55,7 @@ class MdisSpice(Spice, Framer): class MdisPDS3Driver(PDS3, MdisSpice): @property def instrument_id(self): - return self.id_lookup[self._label['INSTRUMENT_ID']] - - @property - def focal_plane_tempature(self): - return self._label['FOCAL_PLANE_TEMPERATURE'].value + return self.id_lookup[self.label['INSTRUMENT_ID']] class MdisIsis3Driver(Isis3, MdisSpice): @@ -79,8 +71,8 @@ class MdisIsis3Driver(Isis3, MdisSpice): @property def instrument_id(self): - return self.id_lookup[self._label['IsisCube']['Instrument']['InstrumentId']] + return self.id_lookup[self.label['IsisCube']['Instrument']['InstrumentId']] @property def focal_plane_tempature(self): - return self._label['IsisCube']['Instrument']['FocalPlaneTemperature'].value + return self.label['IsisCube']['Instrument']['FocalPlaneTemperature'].value diff --git a/ale/drivers/mro_driver.py b/ale/drivers/mro_driver.py index ce7acf7c4c878d3e9b50140c64cd0b49d30ef079..870d3eca1d40398e2de673a972edbb7e78a2ade0 100644 --- a/ale/drivers/mro_driver.py +++ b/ale/drivers/mro_driver.py @@ -32,15 +32,15 @@ class CtxSpice(Spice, LineScanner): class CtxPds3Driver(PDS3, CtxSpice): @property def instrument_id(self): - return self.id_lookup[self._label['INSTRUMENT_NAME']] + return self.id_lookup[self.label['INSTRUMENT_NAME']] @property def spacecraft_name(self): name_lookup = { 'MARS_RECONNAISSANCE_ORBITER': 'MRO' } - return name_lookup[self._label['SPACECRAFT_NAME']] + return name_lookup[self.label['SPACECRAFT_NAME']] @property def instrument_id(self): - return self.id_lookup[self._label['INSTRUMENT_NAME']] + return self.id_lookup[self.label['INSTRUMENT_NAME']] diff --git a/tests/pytests/test_lro_drivers.py b/tests/pytests/test_lro_drivers.py index 39fb43dc33d557a1868545a7b6a4d3d20e1a4a82..05234b7d06ab00892a2707a55f1ddd6fd5faa469 100644 --- a/tests/pytests/test_lro_drivers.py +++ b/tests/pytests/test_lro_drivers.py @@ -115,3 +115,4 @@ def test_lro_creation(lro_lroclabel): with LroPds3Driver(lro_lroclabel) as m: d = m.to_dict() assert isinstance(d, dict) + assert(set(d.keys()) == m.required_keys) diff --git a/tests/pytests/test_mdis_driver.py b/tests/pytests/test_mdis_driver.py index efcbd00a3425eeec72f5280a70e34fe900d14ad9..a290173041896bc4e9902652d102f8c5bb14ecc0 100644 --- a/tests/pytests/test_mdis_driver.py +++ b/tests/pytests/test_mdis_driver.py @@ -247,3 +247,4 @@ def test_mdis_creation(mdislabel): with MdisPDS3Driver(mdislabel) as m: d = m.to_dict() assert isinstance(d, dict) + assert(set(d.keys()) == m.required_keys) diff --git a/tests/pytests/test_mro_drivers.py b/tests/pytests/test_mro_drivers.py index 6f73701267efb77b56c7d93e3d26c61f69c744e3..a18b153593d260e6faa40471bea43b5c19892106 100644 --- a/tests/pytests/test_mro_drivers.py +++ b/tests/pytests/test_mro_drivers.py @@ -62,7 +62,8 @@ def mroctx_label(): END""" -def test_get_dict(mroctx_label): +def test_ctx_creation(mroctx_label): with CtxPds3Driver(mroctx_label) as m: d = m.to_dict() assert isinstance(d, dict) + assert(set(d.keys()) == m.required_keys)