Skip to content

Commit

Permalink
Mariner10 driver and test (#547)
Browse files Browse the repository at this point in the history
* Added Mariner10 driver and test

* Update sensor_name and remove spacecraft_name

* Update inst_id_lookup to return M10_spacecraft

* Added light_time_correction property and updated isd

* Update CHANGELOG.md
  • Loading branch information
chkim-usgs authored Jul 18, 2023
1 parent bf86bf2 commit 5965330
Show file tree
Hide file tree
Showing 17 changed files with 5,756 additions and 1 deletion.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ release.

## [Unreleased]

### Added
- Mariner10 IsisLabelNaifSpice driver, tests, and test data [#547](https://github.com/DOI-USGS/ale/pull/547)

## [0.9.1] - 2023-06-05

### Changed
Expand Down Expand Up @@ -62,4 +65,4 @@ release.
- MGS MOC WAC IsisLabelNaifSpice driver, tests, and test data [#516](https://github.com/DOI-USGS/ale/pull/516)
- Chandrayaan1_mrffr IsisLabelNaifSpice driver, tests and test data [#519](https://github.com/DOI-USGS/ale/pull/519)
- MGS MOC Narrow Angle IsisLabelNaifSpice driver, tests, and test data [#517](https://github.com/DOI-USGS/ale/pull/517)
- Hayabusa NIRS IsisLabelNaifSpice driver, tests and test data [#532](https://github.com/DOI-USGS/ale/pull/532)
- Hayabusa NIRS IsisLabelNaifSpice driver, tests and test data [#532](https://github.com/DOI-USGS/ale/pull/532)
100 changes: 100 additions & 0 deletions ale/drivers/mariner_drivers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import spiceypy as spice
from ale.base.data_naif import NaifSpice
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 Mariner10IsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, NoDistortion, Driver):

@property
def instrument_id(self):
"""
Returns the ID of the instrument
Returns
-------
: str
Name of the instrument
"""
inst_id_lookup = {
"M10_VIDICON_A": "M10_SPACECRAFT",
"M10_VIDICON_B": "M10_SPACECRAFT"
}
return inst_id_lookup[super().instrument_id]

@property
def sensor_model_version(self):
"""
The ISIS Sensor model number for HiRise in ISIS. This is likely just 1.
Returns
-------
: int
ISIS sensor model version
"""
return 1

@property
def sensor_name(self):
"""
Returns the name of the instrument
Returns
-------
: str
Name of the sensor
"""
return super().instrument_id

@property
def sensor_frame_id(self):
"""
Hard coded sensor_frame_id based on the Isis Mariner10 camera model.
Returns
-------
: int
The sensor frame id
"""
return -76000

@property
def ikid(self):
"""
Returns the ikid/frame code from the ISIS label.
Returns
-------
: int
Naif ID used to for identifying the instrument in Spice kernels
"""
return self.label['IsisCube']['Kernels']['NaifFrameCode']

@property
def ephemeris_start_time(self):
"""
Returns the start ephemeris time for the image.
Returns
-------
: float
start time
"""
return spice.str2et(self.utc_start_time.strftime("%Y-%m-%d %H:%M:%S.%f")) - (self.exposure_duration / 2.0)

@property
def light_time_correction(self):
"""
Returns the type of light time correction and abberation correction to
use in NAIF calls.
Returns
-------
: str
The light time and abberation correction string for use in NAIF calls.
See https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/abcorr.html
for the different options available.
"""
return 'NONE'

226 changes: 226 additions & 0 deletions tests/pytests/data/27265/27265-output.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
{
"isis_camera_version": 1,
"image_lines": 700,
"image_samples": 832,
"name_platform": "Mariner_10",
"name_sensor": "M10_VIDICON_A",
"reference_height": {
"maxheight": 1000,
"minheight": -1000,
"unit": "m"
},
"name_model": "USGS_ASTRO_FRAME_SENSOR_MODEL",
"center_ephemeris_time": -812916168.4183488,
"radii": {
"semimajor": 2439.7,
"semiminor": 2439.7,
"unit": "km"
},
"body_rotation": {
"time_dependent_frames": [
10011,
1
],
"ck_table_start_time": -812916168.4183488,
"ck_table_end_time": -812916168.4183488,
"ck_table_original_size": 1,
"ephemeris_times": [
-812916168.4183488
],
"quaternions": [
[
-0.041589464253201175,
-0.036695469453297484,
0.24381936260450102,
-0.9682333796166442
]
],
"angular_velocities": [
[
1.1326300442450132e-07,
-5.816846505242454e-07,
1.0892405863919202e-06
]
],
"reference_frame": 1
},
"instrument_pointing": {
"time_dependent_frames": [
-76000,
1
],
"ck_table_start_time": -812916168.4183488,
"ck_table_end_time": -812916168.4183488,
"ck_table_original_size": 1,
"ephemeris_times": [
-812916168.4183488
],
"quaternions": [
[
-0.4151219005736828,
0.5204702103512857,
0.2881986100016333,
0.6882776539988121
]
],
"angular_velocities": [
[
-0.0,
-0.0,
-0.0
]
],
"reference_frame": 1,
"constant_frames": [
-76000
],
"constant_rotation": [
1.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
1.0
]
},
"naif_keywords": {
"BODY199_RADII": [
2439.7,
2439.7,
2439.7
],
"BODY_FRAME_CODE": 10011,
"BODY_CODE": 199,
"INS-76110_FOCAL_LENGTH": 1493.6,
"INS-76110_BORESIGHT_LINE": 400.0,
"INS-76110_CK_FRAME_ID": -76000.0,
"INS-76110_ITRANSL": [
0.0,
0.0,
75.0
],
"INS-76110_ITRANSS": [
0.0,
75.0,
0.0
],
"INS-76110_CK_REFERENCE_ID": 1.0,
"FRAME_-76110_CLASS": 3.0,
"INS-76110_CK_TIME_TOLERANCE": 1.0,
"CK_-76110_SPK": -76.0,
"INS-76110_PLATFORM_ID": -76.0,
"FRAME_-76110_CENTER": -76.0,
"FRAME_-76110_NAME": "VIDICON_A",
"FRAME_-76110_CLASS_ID": -76110.0,
"INS-76110_CK_TIME_BIAS": 0.0,
"INS-76110_BORESIGHT_SAMPLE": 475.0,
"CK_-76110_SCLK": -76.0,
"INS-76110_PIXEL_PITCH": 0.013333333,
"INS-76110_SPK_TIME_BIAS": 0.0,
"INS-76110_TRANSX": [
0.0,
0.013333333,
0.0
],
"INS-76110_TRANSY": [
0.0,
0.0,
0.013333333
],
"BODY199_PM": [
329.548,
6.1385025,
0.0
],
"BODY199_POLE_RA": [
281.01,
-0.033,
0.0
],
"BODY199_LONG_AXIS": 0.0,
"BODY199_POLE_DEC": [
61.45,
-0.005,
0.0
]
},
"detector_sample_summing": 1,
"detector_line_summing": 1,
"focal_length_model": {
"focal_length": 1493.6
},
"detector_center": {
"line": 400.0,
"sample": 475.0
},
"focal2pixel_lines": [
0.0,
0.0,
75.0
],
"focal2pixel_samples": [
0.0,
75.0,
0.0
],
"optical_distortion": {
"radial": {
"coefficients": [
0.0,
0.0,
0.0
]
}
},
"starting_detector_line": 0,
"starting_detector_sample": 0,
"instrument_position": {
"spk_table_start_time": -812916168.4183488,
"spk_table_end_time": -812916168.4183488,
"spk_table_original_size": 1,
"ephemeris_times": [
-812916168.4183488
],
"positions": [
[
-102988.65244940185,
3813.6761044064274,
-31476.7258130999
]
],
"velocities": [
[
10.073083917183162,
-0.6608509235485678,
2.9052260072869664
]
],
"reference_frame": 1
},
"sun_position": {
"spk_table_start_time": -812916168.4183488,
"spk_table_end_time": -812916168.4183488,
"spk_table_original_size": 1,
"ephemeris_times": [
-812916168.4183488
],
"positions": [
[
6487626.304499695,
61459556.251802824,
32153267.064496163
]
],
"velocities": [
[
-38.73233838516926,
0.39826024551668027,
4.232611805855759
]
],
"reference_frame": 1
}
}
9 changes: 9 additions & 0 deletions tests/pytests/data/27265/27265.isis_0.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
LEAPSECONDS_KERNEL = /isis_data/base/kernels/lsk/naif0012.tls
SPK_KERNEL = /testdata/mariner10-driver/generated-kernels/27265.isis_0.bsp
BODIES = 0, 1, 199, 10, -76
BEGIN_TIME = 1974 MAR 29 17:50:22.619
END_TIME = 1974 MAR 29 17:58:37.796
SOURCE_SPK_KERNEL = /isis_data/mariner10/kernels/spk/MARINER_10_A_gem.bsp
INCLUDE_COMMENTS = no
SOURCE_SPK_KERNEL = /isis_data/base/kernels/spk/de430.bsp
INCLUDE_COMMENTS = no
Loading

0 comments on commit 5965330

Please sign in to comment.