diff --git a/ale/drivers/clementine_drivers.py b/ale/drivers/clementine_drivers.py new file mode 100644 index 000000000..194b4e6c4 --- /dev/null +++ b/ale/drivers/clementine_drivers.py @@ -0,0 +1,111 @@ +import os +import spiceypy as spice +import json +import numpy as np +import pvl + +import ale +from ale.base import Driver +from ale.base.label_isis import IsisLabel +from ale.base.data_naif import NaifSpice +from ale.base.type_distortion import RadialDistortion, NoDistortion +from ale.base.type_sensor import Framer, LineScanner +from ale.util import generate_kernels_from_cube +from ale.base.type_sensor import Framer +from ale.base.type_distortion import NoDistortion + +from ale import util + + +class ClementineUvvisIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, NoDistortion, Driver): + """ + Driver for reading Ultra-violet Invisible Spectrum ISIS3 Labels + """ + + @property + def instrument_id(self): + """ + Returns an instrument id for uniquely identifying the instrument, + but often also used to be piped into Spice Kernels to acquire + IKIDS. Therefor they are the same ID that Spice expects in bods2c + calls. Expect instrument_id to be defined in the IsisLabel mixin. + This should be a string of the form NEAR EARTH ASTEROID RENDEZVOUS + + Returns + ------- + : str + instrument id + """ + lookup_table = { + "UVVIS": "ULTRAVIOLET/VISIBLE CAMERA" + } + return lookup_table[super().instrument_id] + + @property + def sensor_name(self): + """ + Returns the name of the instrument + + Returns + ------- + : str + instrument name + """ + filter = self.label["IsisCube"]['BandBin']['FilterName'] + return "CLEM_" + super().instrument_id + "_" + filter + + @property + def spacecraft_name(self): + """ + Returns the name of the spacecraft + + Returns + ------- + : str + spacecraft name + """ + return super().spacecraft_name.replace(" ", "_") + + @property + def sensor_model_version(self): + """ + Returns ISIS sensor model version + + Returns + ------- + : int + ISIS sensor model version + """ + return 1 + + @property + def ephemeris_start_time(self): + return spice.utc2et(self.utc_start_time.strftime("%Y-%m-%d %H:%M:%S.%f")) + + @property + def ephemeris_stop_time(self): + """ + Returns the sum of the starting ephemeris time and the exposure duration. + Expects ephemeris start time and exposure duration to be defined. These + should be double precision numbers containing the ephemeris start and + exposure duration of the image. + Returns + ------- + : double + Ephemeris stop time for an image + """ + return self.ephemeris_start_time + self.exposure_duration + + @property + def ikid(self): + """ + Overridden to grab the ikid from the Isis Cube since there is no way to + obtain this value with a spice bods2c call. Isis sets this value during + ingestion, based on the original fits file. + + Returns + ------- + : int + Naif ID used to for identifying the instrument in Spice kernels + """ + return self.label["IsisCube"]["Kernels"]["NaifFrameCode"] diff --git a/notebooks/write_MsiIsisLabelNaifSpiceDriver.ipynb b/notebooks/write_MsiIsisLabelNaifSpiceDriver.ipynb deleted file mode 100644 index 9552ccf43..000000000 --- a/notebooks/write_MsiIsisLabelNaifSpiceDriver.ipynb +++ /dev/null @@ -1,1419 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "e6ee49c3", - "metadata": {}, - "outputs": [], - "source": [ - "# You will need the ISISDATA area in your environment to get the appropriate kernel paths\n", - "import os\n", - "os.environ[\"ISISDATA\"] = \"/Users/ahibl/working/astro/local_isis_data/\"\n", - "os.environ[\"ISISTESTDATA\"] = \"/Users/ahibl/astro_efs/isis_testData/\"\n", - "os.environ[\"ISISROOT\"] = \"/Users/ahibl/working/astro/ISIS3/build/\"\n", - "os.environ[\"ALESPICEROOT\"] = \"/Users/ahibl/astro_efs/usgs_data/\"\n", - "\n", - "import spiceypy as spice\n", - "import json\n", - "import numpy as np\n", - "import pvl\n", - "\n", - "import ale\n", - "from ale.base import Driver\n", - "from ale.base.label_isis import IsisLabel\n", - "from ale.base.data_naif import NaifSpice\n", - "from ale.base.type_distortion import RadialDistortion, NoDistortion\n", - "from ale.base.type_sensor import Framer, LineScanner\n", - "from ale.util import generate_kernels_from_cube\n", - "from ale.base.type_sensor import Framer\n", - "from ale.base.type_distortion import NoDistortion\n", - "from ale.drivers.msl_drivers import MslMastcamPds3NaifSpiceDriver\n", - "from ale.formatters.usgscsm_formatter import to_usgscsm\n", - "\n", - "from ale import util\n", - "from ale.util import generate_kernels_from_cube\n", - "from ale.drivers import AleJsonEncoder, load, loads\n", - "from ale.formatters.formatter import to_isd" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "6ef22a77", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['/Users/ahibl/working/astro/local_isis_data//base/kernels/spk/de405.bsp',\n", - " '/Users/ahibl/working/astro/local_isis_data//near/kernels/tspk/erosephem_1999004_2002181.bsp',\n", - " '/Users/ahibl/working/astro/local_isis_data//near/kernels/spk/near_erosorbit_nav_v1.bsp',\n", - " '/Users/ahibl/working/astro/local_isis_data//near/kernels/ck/near_2000056_v01.bc',\n", - " '/Users/ahibl/working/astro/local_isis_data//near/kernels/fk/eros_fixed.tf',\n", - " '/Users/ahibl/working/astro/local_isis_data//base/kernels/pck/pck00009.tpc',\n", - " '/Users/ahibl/working/astro/local_isis_data//near/kernels/ik/msi15.ti',\n", - " '/Users/ahibl/working/astro/local_isis_data//base/kernels/lsk/naif0012.tls',\n", - " '/Users/ahibl/working/astro/local_isis_data//near/kernels/sclk/near_171.tsc',\n", - " '/Users/ahibl/working/astro/local_isis_data//near/kernels/iak/msiAddendum002.ti']" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Generate kernels from an ISIS spiceinit'd label\n", - "cube = \"/Users/ahibl/working/astro/img_data/MSI/cubes/ale/ale_spice01.cub\"\n", - "kernels = generate_kernels_from_cube(cube, expand=True, format_as='list')\n", - "kernels\n", - "a\n", - "# change to desired PDS3 image path\n", - "#file_name = '/Users/ahibl/working/astro/img_data/0269ML0011790000106115E01_DRCX.lbl'\n", - "\n", - "# metakernels are furnished when entering the context (with block) with a driver instance\n", - "# most driver constructors simply accept an image path \n", - "#with MslMastcamPds3NaifSpiceDriver(file_name, props={'kernels': [\"/Users/ahibl/working/astro/rand/msl_2017_v01.tm\"]}) as driver:\n", - " # pass driver instance into formatter function\n", - " #usgscsmString = to_usgscsm(driver)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "0721b82d", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'isis_isd' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn [4], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/Users/ahibl/working/astro/ISDs/msl_2.json\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mw\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m fp:\n\u001b[0;32m----> 2\u001b[0m json\u001b[38;5;241m.\u001b[39mdump(\u001b[43misis_isd\u001b[49m, fp, \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m=\u001b[39mAleJsonEncoder, indent\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\n", - "\u001b[0;31mNameError\u001b[0m: name 'isis_isd' is not defined" - ] - } - ], - "source": [ - "with open(\"/Users/ahibl/working/astro/ISDs/msl_2.json\", 'w') as fp:\n", - " json.dump(ale_isd, fp, cls=AleJsonEncoder, indent=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2d21b857", - "metadata": {}, - "outputs": [], - "source": [ - "# Build new driver in this cell\n", - "\n", - "class MsiIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, NoDistortion, Driver):\n", - " \n", - " @property\n", - " def instrument_id(self):\n", - " \"\"\"\n", - " Returns an instrument id for uniquely identifying the instrument,\n", - " but often also used to be piped into Spice Kernels to acquire\n", - " IKIDS. Therefor they are the same ID that Spice expects in bods2c\n", - " calls. Expect instrument_id to be defined in the IsisLabel mixin.\n", - " This should be a string of the form NEAR EARTH ASTEROID RENDEZVOUS\n", - "\n", - " Returns\n", - " -------\n", - " : str\n", - " instrument id\n", - " \"\"\"\n", - " lookup_table = {\n", - " \"MSI\": \"NEAR EARTH ASTEROID RENDEZVOUS\"\n", - " }\n", - " print(lookup_table[super().instrument_id])\n", - " return lookup_table[super().instrument_id]\n", - "\n", - " @property\n", - " def sensor_name(self):\n", - " \"\"\"\n", - " Returns the name of the instrument\n", - "\n", - " Returns\n", - " -------\n", - " : str\n", - " instrument name\n", - " \"\"\"\n", - " return \"MULTI-SPECTRAL IMAGER\"\n", - "\n", - " @property\n", - " def sensor_model_version(self):\n", - " \"\"\"\n", - " Returns ISIS sensor model version\n", - "\n", - " Returns\n", - " -------\n", - " : int\n", - " ISIS sensor model version\n", - " \"\"\"\n", - " return 1\n", - " \n", - " # Overridden to remove decimal and 2multiply by a factor of 100 helps remove 2 fields issue cleanly\n", - " @property\n", - " def spacecraft_clock_start_count(self):\n", - " \"\"\"\n", - " The spacecraft clock start count, frequently used to determine the start time\n", - " of the image.\n", - "\n", - " Returns\n", - " -------\n", - " : str\n", - " spacecraft clock start count\n", - " \"\"\"\n", - " if 'SpacecraftClockStartCount' in self.label['IsisCube']['Instrument']:\n", - " \n", - " return str(self.label['IsisCube']['Instrument']['SpacecraftClockStartCount'])\n", - " else:\n", - " return None\n", - "\n", - " # Overridden to remove decimal and 2multiply by a factor of 100 helps remove 2 fields issue cleanly\n", - " @property\n", - " def spacecraft_clock_stop_count(self):\n", - " \"\"\"\n", - " The spacecraft clock stop count, frequently used to determine the stop time\n", - " of the image.\n", - "\n", - " Returns\n", - " -------\n", - " : str\n", - " spacecraft clock stop count\n", - " \"\"\"\n", - " if 'SpacecraftClockStopCount' in self.label['IsisCube']['Instrument']:\n", - " return str(self.label['IsisCube']['Instrument']['SpacecraftClockStopCount'] * 100).replace(\".\",\"\")\n", - " else:\n", - " return None\n", - "\n", - " @property\n", - " def ephemeris_stop_time(self):\n", - " \"\"\"\n", - " Returns the sum of the starting ephemeris time and the exposure duration.\n", - " Expects ephemeris start time and exposure duration to be defined. These\n", - " should be double precision numbers containing the ephemeris start and\n", - " exposure duration of the image.\n", - " Returns\n", - " -------\n", - " : double\n", - " Ephemeris stop time for an image\n", - " \"\"\"\n", - " return self.ephemeris_start_time + self.exposure_duration\n", - " \n", - " @property\n", - " def ikid(self):\n", - " \"\"\"\n", - " Overridden to grab the ikid from the Isis Cube since there is no way to\n", - " obtain this value with a spice bods2c call. Isis sets this value during\n", - " ingestion, based on the original fits file.\n", - " \n", - " Returns\n", - " -------\n", - " : int\n", - " Naif ID used to for identifying the instrument in Spice kernels\n", - " \"\"\"\n", - " return self.label['IsisCube']['Kernels']['NaifFrameCode']\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "27ed1125", - "metadata": {}, - "outputs": [], - "source": [ - "import pprint\n", - "\n", - "# Create ISD from ISIS label\n", - "ale_file = \"/Users/ahibl/working/astro/img_data/MSI/cubes/ale/ale_spice01.cub\"\n", - "#unspiced_file = \"/Users/ahibl/working/astro/img_data/MSI/ad_1.cub\"\n", - "#isis_file = \"/Users/ahibl/working/astro/img_data/MSI/spicy_ad_1.cub\"\n", - "\n", - "with MsiIsisLabelNaifSpiceDriver(ale_file, props = {\"kernels\" : kernels}) as driver:\n", - " ale_isd = to_isd(driver)\n", - "\n", - "#with MsiIsisLabelNaifSpiceDriver(isis_file, props = {\"kernels\" : kernels}) as driver:\n", - " #isis_isd = to_isd(driver)\n", - "\n", - "#with MsiIsisLabelNaifSpiceDriver(unspiced_file, props = {\"kernels\" : kernels}) as driver:\n", - " #unspicy_isd = to_isd(driver)\n", - " \n", - "#isds = [ale_isd, isis_isd, unspicy_isd]\n", - "\n", - "#pprint.pprint(isds[0])\n", - "\n", - "#print(\"\\n\\n\")\n", - "\n", - "#pprint.pprint(isds[1])\n", - "\n", - "#print(\"\\n\\n\")\n", - "\n", - "#pprint.pprint(isds[2])" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "24390fc9", - "metadata": {}, - "outputs": [], - "source": [ - "# with open(\"/Users/ahibl/working/astro/ISDs/msl_1.json\", 'w') as fp:\n", - "# json.dump(usgscsmString, fp, cls=AleJsonEncoder, indent=2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5c091e62", - "metadata": {}, - "outputs": [], - "source": [ - "file = \"/Users/ahibl/working/astro/ISIS3/isis/tests/data/near/msi2isis/test.cub\"\n", - "\n", - "with MsiIsisLabelNaifSpiceDriver(file, props = {\"kernels\" : kernels}) as driver:\n", - " #test area" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "71e5d6cb", - "metadata": {}, - "outputs": [], - "source": [ - "# Write ISD to file\n", - "with open(\"/Users/ahibl/working/astro/ISDs/msi_aled.json\", 'w') as fp:\n", - " json.dump(ale_isd, fp, cls=AleJsonEncoder, indent=2)\n", - "#with open(\"/Users/ahibl/working/astro/ISDs/msi_isis.json\", 'w') as fp:\n", - "# json.dump(isis_isd, fp, cls=AleJsonEncoder, indent=2)\n", - "#with open(\"/Users/ahibl/working/astro/ISDs/msi_unspiced.json\", 'w') as fp:\n", - "# json.dump(unspicy_isd, fp, cls=AleJsonEncoder, indent=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "85d6606d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Banana False False\n", - "[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]\n", - "Attempting to pre-parse label file\n", - "First parse attempt failed with\n", - "(LexerError(...), 'Expecting an Aggregation Block, an Assignment Statement, or an End Statement, but found \"+\" : line 366 column 42 (char 8915) near \" = LT+S\\n \"')\n", - "Successfully pre-parsed label file\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n", - "Trying \n", - "Failed: Expecting value: line 1 column 1 (char 0)\n", - "\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n", - "Traceback (most recent call last):\n", - " File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n", - " res = driver(label, props=props, parsed_label=parsed_label)\n", - " File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n", - " self._props = json.loads(props)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n", - " return _default_decoder.decode(s)\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n", - " obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n", - " File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n", - " raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n", - "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n" - ] - }, - { - "ename": "Exception", - "evalue": "No Such Driver for Label", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mException\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn [3], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m file \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/Users/ahibl/working/astro/img_data/MSI/labels/ale_spice01.lbl\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m----> 2\u001b[0m \u001b[43male\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43male\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/working/astro/ale/ale/drivers/__init__.py:166\u001b[0m, in \u001b[0;36mload\u001b[0;34m(label, props, formatter, verbose, only_isis_spice, only_naif_spice)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFailed: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 165\u001b[0m traceback\u001b[38;5;241m.\u001b[39mprint_exc()\n\u001b[0;32m--> 166\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mNo Such Driver for Label\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "\u001b[0;31mException\u001b[0m: No Such Driver for Label" - ] - } - ], - "source": [ - "file = '/Users/ahibl/working/astro/img_data/MSI/labels/ale_spice01.lbl'\n", - "ale.load(file, \"ale\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "a1d84d0e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Object = IsisCube\n", - " Object = Core\n", - " StartByte = 65537\n", - " Format = Tile\n", - " TileSamples = 179\n", - " TileLines = 412\n", - "\n", - " Group = Dimensions\n", - " Samples = 537\n", - " Lines = 412\n", - " Bands = 1\n", - " End_Group\n", - "\n", - " Group = Pixels\n", - " Type = Real\n", - " ByteOrder = Lsb\n", - " Base = 0.0\n", - " Multiplier = 1.0\n", - " End_Group\n", - " End_Object\n", - "\n", - " Group = Instrument\n", - " SpacecraftName = \"NEAR EARTH ASTEROID RENDEZVOUS\"\n", - " InstrumentId = MSI\n", - " TargetName = EROS\n", - " StartTime = 2000-02-25T05:16:12.656\n", - " StopTime = 2000-02-25T05:16:12.745\n", - " SpacecraftClockStartCount = 126865998830\n", - " SpacecraftClockStopCount = 126865998919\n", - " ExposureDuration = 89.00 \n", - " OriginalSpacecraftClockStartCount = 126865998.830\n", - " OriginalSpacecraftClockStopCount = 126865998.919\n", - " DpuDeckTemperature = 286.50 \n", - " End_Group\n", - "\n", - " Group = Archive\n", - " DataSetId = NEAR-A-MSI-3-EDR-EROS/ORBIT-V1.0\n", - " ProducerFullName = \"Scott L. Murchie\"\n", - " ProductId = M0126865998F4_2P_IOF.FIT\n", - " ProductVersionId = 1.0\n", - " InstrumentHostName = \"NEAR EARTH ASTEROID RENDEZVOUS\"\n", - " InstrumentName = \"MULTI-SPECTRAL IMAGER\"\n", - " InstrumentId = MSI\n", - " TargetName = EROS\n", - " End_Group\n", - "\n", - " Group = BandBin\n", - " FilterNumber = 4\n", - " Center = 950 \n", - " End_Group\n", - "\n", - " Group = Kernels\n", - " NaifFrameCode = -93001\n", - " LeapSecond = $base/kernels/lsk/naif0012.tls\n", - " TargetAttitudeShape = $base/kernels/pck/pck00009.tpc\n", - " TargetPosition = (Table, $base/kernels/spk/de405.bsp,\n", - " $near/kernels/tspk/erosephem_1999004_2002181.-\n", - " bsp)\n", - " InstrumentPointing = (Table, $near/kernels/ck/near_2000056_v01.bc,\n", - " $near/kernels/fk/eros_fixed.tf)\n", - " Instrument = $near/kernels/ik/msi15.ti\n", - " SpacecraftClock = $near/kernels/sclk/near_171.tsc\n", - " InstrumentPosition = (Table,\n", - " $near/kernels/spk/near_erosorbit_nav_v1.bsp)\n", - " InstrumentAddendum = $near/kernels/iak/msiAddendum002.ti\n", - " ShapeModel = Null\n", - " InstrumentPositionQuality = Reconstructed\n", - " InstrumentPointingQuality = Reconstructed\n", - " CameraVersion = 2\n", - " Source = ale\n", - " End_Group\n", - "End_Object\n", - "\n", - "Object = Label\n", - " Bytes = 65536\n", - "End_Object\n", - "\n", - "Object = Table\n", - " Name = InstrumentPointing\n", - " StartByte = 955907\n", - " Bytes = 128\n", - " Records = 2\n", - " ByteOrder = Lsb\n", - " TimeDependentFrames = (-93000, 1)\n", - " ConstantFrames = (-93001, -93000)\n", - " ConstantRotation = (-0.0014422521585656, 6.97819591591179e-07,\n", - " 0.99999895995357, -4.83840156360023e-04,\n", - " -0.99999988294934, 0.0, 0.99999884290304,\n", - " -4.83839653143797e-04, 0.0014422523273822)\n", - " CkTableStartTime = 4727836.2200713\n", - " CkTableEndTime = 4727837.220071\n", - " CkTableOriginalSize = 2\n", - " FrameTypeCode = 3\n", - " Description = \"Created by spiceinit\"\n", - " Kernels = ($near/kernels/ck/near_2000056_v01.bc,\n", - " $near/kernels/fk/eros_fixed.tf)\n", - "\n", - " Group = Field\n", - " Name = J2000Q0\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Q1\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Q2\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Q3\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = AV1\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = AV2\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = AV3\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = ET\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "End_Object\n", - "\n", - "Object = Table\n", - " Name = InstrumentPosition\n", - " StartByte = 956035\n", - " Bytes = 56\n", - " Records = 1\n", - " ByteOrder = Lsb\n", - " CacheType = Linear\n", - " SpkTableStartTime = 4727836.8855711\n", - " SpkTableEndTime = 4727836.8855711\n", - " SpkTableOriginalSize = 1.0\n", - " Description = \"Created by spiceinit\"\n", - " Kernels = $near/kernels/spk/near_erosorbit_nav_v1.bsp\n", - "\n", - " Group = Field\n", - " Name = J2000X\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Y\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Z\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000XV\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000YV\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000ZV\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = ET\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "End_Object\n", - "\n", - "Object = Table\n", - " Name = BodyRotation\n", - " StartByte = 956091\n", - " Bytes = 64\n", - " Records = 1\n", - " ByteOrder = Lsb\n", - " TimeDependentFrames = (2000433, 1)\n", - " CkTableStartTime = 4727836.8855711\n", - " CkTableEndTime = 4727836.8855711\n", - " CkTableOriginalSize = 1\n", - " FrameTypeCode = 3\n", - " Description = \"Created by spiceinit\"\n", - " Kernels = ($base/kernels/spk/de405.bsp,\n", - " $near/kernels/tspk/erosephem_1999004_2002181.bsp,\n", - " $base/kernels/pck/pck00009.tpc)\n", - " SolarLongitude = 128.72797999357\n", - "\n", - " Group = Field\n", - " Name = J2000Q0\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Q1\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Q2\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Q3\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = AV1\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = AV2\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = AV3\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = ET\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "End_Object\n", - "\n", - "Object = Table\n", - " Name = SunPosition\n", - " StartByte = 956155\n", - " Bytes = 56\n", - " Records = 1\n", - " ByteOrder = Lsb\n", - " CacheType = Linear\n", - " SpkTableStartTime = 4727836.8855711\n", - " SpkTableEndTime = 4727836.8855711\n", - " SpkTableOriginalSize = 1.0\n", - " Description = \"Created by spiceinit\"\n", - " Kernels = ($base/kernels/spk/de405.bsp,\n", - " $near/kernels/tspk/erosephem_1999004_2002181.bsp)\n", - "\n", - " Group = Field\n", - " Name = J2000X\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Y\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000Z\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000XV\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000YV\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = J2000ZV\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "\n", - " Group = Field\n", - " Name = ET\n", - " Type = Double\n", - " Size = 1\n", - " End_Group\n", - "End_Object\n", - "\n", - "Object = History\n", - " Name = IsisCube\n", - " StartByte = 956211\n", - " Bytes = 2503\n", - "End_Object\n", - "\n", - "Object = OriginalLabel\n", - " Name = IsisCube\n", - " StartByte = 950513\n", - " Bytes = 3820\n", - "End_Object\n", - "\n", - "Object = NaifKeywords\n", - " BODY2000433_LONG_AXIS = 0\n", - " BODY2000433_PM = (326.07, 1639.38864745, 0)\n", - " BODY2000433_POLE_DEC = (17.22, 0, 0)\n", - " BODY2000433_POLE_RA = (11.35, 0, 0)\n", - " BODY2000433_RADII = (17, 5.5, 5.5)\n", - " BODY_CODE = 2000433\n", - " BODY_FRAME_CODE = 2.00043e+06\n", - " FRAME_-93001_CENTER = -93\n", - " FRAME_-93001_CLASS = 4\n", - " FRAME_-93001_CLASS_ID = -93001\n", - " FRAME_-93001_NAME = NEAR_MSI\n", - " FRAME_2000433_CENTER = 2.00043e+06\n", - " FRAME_2000433_CLASS = 2\n", - " FRAME_2000433_CLASS_ID = 2.00043e+06\n", - " FRAME_2000433_NAME = EROS_FIXED\n", - " INS-93001_BORESIGHT = (1, 0, 0)\n", - " INS-93001_BORESIGHT_LINE = 206.5\n", - " INS-93001_BORESIGHT_SAMPLE = 269\n", - " INS-93001_FOCAL_LENGTH = 166.85\n", - " INS-93001_FOV_BOUNDARY_CORNERS = (1, 0.01974485714, 0.02575366124, 1,\n", - " -0.01974485714, 0.02575366124, 1,\n", - " -0.01974485714, -0.02575366124, 1)\n", - " INS-93001_FOV_FRAME = NEAR_MSI\n", - " INS-93001_FOV_SHAPE = POLYGON\n", - " INS-93001_FRAME_ID = -93001\n", - " INS-93001_ITRANSL = (0, 0, -62.5)\n", - " INS-93001_ITRANSS = (0, 62.5, 0)\n", - " INS-93001_K1 = -7e-05\n", - " INS-93001_LIGHTTIME_CORRECTION = LT+S\n", - " INS-93001_LT_SURFACE_CORRECT = FALSE\n", - " INS-93001_PIXEL_PITCH = 0.016\n", - " INS-93001_PLATFORM_ID = -93000\n", - " INS-93001_SWAP_OBSERVER_TARGET = TRUE\n", - " INS-93001_TRANSX = (0, 0.016, 0)\n", - " INS-93001_TRANSY = (0, 0, -0.016)\n", - " OBJECT_2000433_FRAME = EROS_FIXED\n", - " TKFRAME_-93001_ANGLES = (90, -179.972278, -0.082635)\n", - " TKFRAME_-93001_AXES = (2, 1, 2)\n", - " TKFRAME_-93001_RELATIVE = NEAR_SC_BUS_PRIME\n", - " TKFRAME_-93001_SPEC = ANGLES\n", - " TKFRAME_-93001_UNITS = DEGREES\n", - " CLOCK_ET_-93_126865998830_COMPUTED = eb1bd43507095241\n", - "End_Object\n", - "End\n", - "\n" - ] - } - ], - "source": [ - "with open(file) as f:\n", - " print(f.read())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4e8eae81", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.xsp b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.xsp new file mode 100644 index 000000000..0096699a1 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.xsp @@ -0,0 +1,334 @@ +DAFETF NAIF DAF ENCODED TRANSFER FILE +'DAF/SPK ' +'2' +'6' +'SPKMERGE ' +BEGIN_ARRAY 1 45 +'DE-0430LE-0430 ' +'-ADAEEA74017D5^7' +'-ADAEDB69BFF418^7' +'12D' +'3' +'1' +'2' +45 +'-AD91FC^7' +'2A3^5' +'-51024364C4639^5' +'B883E22CD53518^3' +'569957D04BB954^4' +'6B3C57F8099304^2' +'-915C71C04C30C^2' +'-2B1B68A4D12EEC^1' +'C950A4AF9241E^0' +'8C7279B61C2D78^-1' +'-1580CC8672C334^-1' +'-1913D57811E9E2^-2' +'278D97358495AA^-3' +'4601E5BC30F42C^-4' +'-4685CE6D707C54^-5' +'2EC82BF1B77216^4' +'-296A7257D2C27E^5' +'-301563035305B4^3' +'73572F3857B904^3' +'169BBFF79477D1^2' +'-9C49C65EB6692^1' +'-50B7B82152159C^0' +'EEC288B0B0B788^-1' +'E8C2C7EA7C61E^-2' +'-1AB5C3F01BA204^-2' +'-286287D6BADAB2^-3' +'304257578A9162^-4' +'6E947FAADCA644^-5' +'-53E77AECBBF5FC^4' +'-F6ACBBAF827488^4' +'5BDB23004A6AEC^3' +'2B9EDBFC37C23A^3' +'-3274B6EA06988A^1' +'-3DC9C49D6B5742^1' +'-E210ED150F2BB8^-1' +'644F2A0795718^-1' +'3BA2A8C9C35D^-2' +'-BF6DBAA8F9C65^-3' +'-BF27C792CB0128^-4' +'1792EE5EEBC227^-4' +'23B5D17709031E^-5' +'-ADBC2C^7' +'546^5' +'29^2' +'1^1' +END_ARRAY 1 45 +BEGIN_ARRAY 2 39 +'DE-0430LE-0430 ' +'-ADAEEA74017D5^7' +'-ADAEDB69BFF418^7' +'A' +'0' +'1' +'2' +39 +'-AE108C^7' +'A8C^5' +'1B7058FBC17A5F^5' +'-17EC8BFFA69FCC^4' +'-FFB653884FB5E^1' +'-2F31BF0F739D54^-1' +'-7F6A4E93591F8^-2' +'653437D37817B8^-3' +'338CBA2D6B4D8C^-4' +'-22652CF2D5CAB4^-5' +'45F8E641B6D78C^-6' +'-92F2B264CBC77^-7' +'65793C82006788^-8' +'DC91643F5A77C8^5' +'107E95C1DBEC27^4' +'-C5C06C04C0795^1' +'20D35F0D4EF3BC^-1' +'-3C1497D6CF528^-2' +'-54C9BDD50E664C^-3' +'6FE9FAD1CB8A2C^-4' +'-178D7F56E2A365^-5' +'62123C4FCF3A7^-6' +'B9277A096AD468^-8' +'B50967B7DAAFA8^-9' +'5E24DC18B88F48^5' +'7CB15853952D18^3' +'-5150DC3EAD99D8^1' +'1397704BC94FBF^-1' +'-AEDCFEADBE2338^-3' +'-3266698E978F8C^-3' +'365A3B2872D194^-4' +'-96E83C074CAB38^-6' +'2D0B40763F0846^-6' +'1530CB44729EDB^-7' +'-2EDCD8E8359FDC^-9' +'-AEB94C^7' +'1518^6' +'23^2' +'1^1' +END_ARRAY 2 39 +BEGIN_ARRAY 3 45 +'DE-0430LE-0430 ' +'-ADAEEA74017D5^7' +'-ADAEDB69BFF418^7' +'3' +'0' +'1' +'2' +45 +'-AE108C^7' +'A8C^5' +'-8D522D75B6521^7' +'-3FCFCE93945218^5' +'ADFEF9C8640218^5' +'-253AAA21EE0C3^3' +'-11F3F452ABF1AF^3' +'EA5CACE6D68688^0' +'BBEF69DCE9CD78^-1' +'-1BED4C3E850E8A^-2' +'557F2DA2E706F8^-3' +'8C34DB03A4665^-4' +'-16ADC2F6F33DCF^-4' +'-D0D3545A51F758^-5' +'-27CAC691DE74E8^-5' +'5974A8CE5900E^5' +'-120905178CB298^7' +'99A149DCE62ED^3' +'3B0D9D2CFF6B32^4' +'-1A7041745EAFE2^2' +'-3B534762B4971E^1' +'563FC03F2F926^-1' +'2ACA5EE45C53B^-2' +'2A6CFF87B4AFB^-4' +'-6849B6E8607148^-4' +'-1CCB84033C3571^-4' +'-33768E0B09CFE8^-5' +'12055C7B0BB337^-5' +'2548BF2EDE6D82^5' +'-7D1BFE69D4141C^6' +'42ABF6ADEC668C^3' +'199A82E86F45E2^4' +'-B76BD94CD5538^1' +'-19B7598B9A9B51^1' +'25C0D2BFA0EDD6^-1' +'10E8E2FF6E4D78^-2' +'-5E56E2707CF55C^-4' +'-2651B7556EBBBE^-4' +'-77F1F667EF7BF8^-5' +'-7686A49A36678^-6' +'78D42CB1FB18EC^-6' +'-AEB94C^7' +'1518^6' +'29^2' +'1^1' +END_ARRAY 3 45 +BEGIN_ARRAY 4 136 +'Segment 5 ' +'-ADAEEA74017D5^7' +'-ADAEDB69BFF418^7' +'-28' +'12D' +'1' +'8' +136 +'620486BCFE5CBC^3' +'2C05D18A818902^3' +'-55D0DC359CADC4^3' +'12197FC9A6FE67^1' +'-7C0ACC88787A7C^0' +'13A2F530D87882^1' +'636C32019320C4^3' +'2B69BB4FE39264^3' +'-54461DBB0B4124^3' +'11DDDB18A72A16^1' +'-7DB19971A6B0C8^0' +'13D65C63DC89BA^1' +'64CF2A2865CFF4^3' +'2ACB978088734E^3' +'-52B76305CA0CFC^3' +'11A130BFCE8CDF^1' +'-7F53B270B737B^0' +'1408FA06926EC6^1' +'662D5AED19073^3' +'2A2B6C1B8A7CC4^3' +'-5124BC12EC5A98^3' +'1163853F7036B2^1' +'-80F0E7494C2B78^0' +'143AC7EF4A019^1' +'6786B0678455BC^3' +'29893F5BE6285A^3' +'-4F8E395995666C^3' +'1124DD5539BEC8^1' +'-8289085785321^0' +'146BC0115EA64E^1' +'68DB1710C7C1AC^3' +'28E517B7D1EFBC^3' +'-4DF3EBC8DC0298^3' +'10E53DFB445A83^1' +'-841BE6A21CCC6^0' +'149BDC7FA4ED0F^1' +'6A2A7BC7DD72C8^3' +'283EFBDFC1E454^3' +'-4C55E4C502DE1^3' +'10A4AC66B13357^1' +'-85A953ECCC8B88^0' +'14CB176ED184A6^1' +'6B74CBD62BF604^3' +'2796F2BD60646C^3' +'-4AB4362498423C^3' +'10632E0661FD53^1' +'-873122C9F14EF^0' +'14F96B37C6BCCE^1' +'6CB9F4F3E07E04^3' +'26ED0372B0207C^3' +'-490EF22DF7A274^3' +'1020C8817864E1^1' +'-88B326AB590C5^0' +'1526D259BC3BB7^1' +'6DF9E54C842108^3' +'26413558CDE39A^3' +'-47662B93EEEC2^3' +'FDD81B5D383BB^0' +'-8A2F33F3F71DA^0' +'1553477C85F448^1' +'6F348B82F04288^3' +'25938FFEA9B1A4^3' +'-45B9F57263D01^3' +'F995FB665E6038^0' +'-8BA52007C4DF2^0' +'157EC57296507B^1' +'7069D6B576CB48^3' +'24E41B27E4053C^3' +'-440A634B4262D4^3' +'F5468C975474^0' +'-8D14C15CEBD408^0' +'15A9473B2C65C1^1' +'7199B681F4F448^3' +'2432DECB467BD6^3' +'-425789028F7A4^3' +'F0EA366BB9DD5^0' +'-8E7DEF8AE07D6^0' +'15D2C804374AB1^1' +'72C41B095DA45C^3' +'237FE311619568^3' +'-40A17ADADCCD94^3' +'EC8163566D01F^0' +'-8FE0835B845048^0' +'15FB432C7E8D1C^1' +'73E8F4F3B1676^3' +'22CB30530458F^3' +'-3EE84D715B220C^3' +'E80C809F6131B^0' +'-913C56D9318BE8^0' +'1622B4455A0AC3^1' +'750835731FF208^3' +'2214CF17A8A4E4^3' +'-3D2C15B9EC53F6^3' +'E38BFE3F31438^0' +'-9291455EAC00B^0' +'16491714A868DB^1' +'7621CE472B6FFC^3' +'215CC813BE8526^3' +'-3B6CE8FAEBED6A^3' +'DF004EB8B83D98^0' +'-93DF2BA4BB829^0' +'166E67966D9E91^1' +'7735B1C06F9D94^3' +'20A32426C98144^3' +'-39AADCC87D3B9E^3' +'DA69E6F074B99^0' +'-9525E7D04D4628^0' +'1692A1FE7DA3F6^1' +'7843D2C2B4D788^3' +'1FE7EC59EAD758^3' +'-37E60700FF0D04^3' +'D5C93E0291515^0' +'-9665597E97EAF8^0' +'16B5C2B9DB883^1' +'794C24C81AC06C^3' +'1F2B29DDA5844E^3' +'-361E7DC7A730FE^3' +'D11ECD17555188^0' +'-979D61D139CA18^0' +'16D7C67011C636^1' +'7A4E9BE3498508^3' +'1E6CE6082B3E1A^3' +'-345457806AAF16^3' +'CC6B0F369AB72^0' +'-98CDE379BB6BA^0' +'16F8AA0471372D^1' +'7B4B2CC1F8C2E8^3' +'1DAD2A534D9601^3' +'-3287AACB114138^3' +'C7AE8119EF1FE8^0' +'-99F6C2C2B6B618^0' +'17186A96F7FABC^1' +'-ADAEF07D07A56^7' +'14^2' +'9^1' +'16^2' +END_ARRAY 4 136 +TOTAL_ARRAYS 4 + ~NAIF/SPC BEGIN COMMENTS~ +; uvvis/LUA3107H.161.clem_0.bsp LOG FILE + +; Created 2023-07-28/10:00:46.00. +; +; BEGIN SPKMERGE COMMANDS + +LEAPSECONDS_KERNEL = /Users/ahibl/astro_efs/base/kernels/lsk/naif0012.tls + +SPK_KERNEL = uvvis/LUA3107H.161.clem_0.bsp + SOURCE_SPK_KERNEL = /Users/ahibl/astro_efs/base/kernels/spk/de430.bsp + INCLUDE_COMMENTS = NO + BODIES = 3, 10, 301 + BEGIN_TIME = 1994 MAR 25 15:03:56.564 + END_TIME = 1994 MAR 25 15:07:57.205 +SOURCE_SPK_KERNEL = /Users/ahibl/astro_efs/Clementine1/kernels/spk/SPKMERGE_940219_940504_CLEMV001b.bsp + INCLUDE_COMMENTS = NO + BODIES = -40 + BEGIN_TIME = 1994 MAR 25 15:03:56.564 + END_TIME = 1994 MAR 25 15:07:57.205 + +; END SPKMERGE COMMANDS + ~NAIF/SPC END COMMENTS~ diff --git a/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.xsp b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.xsp new file mode 100644 index 000000000..7beba1b8b --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.xsp @@ -0,0 +1,334 @@ +DAFETF NAIF DAF ENCODED TRANSFER FILE +'DAF/SPK ' +'2' +'6' +'SPKMERGE ' +BEGIN_ARRAY 1 45 +'DE-0430LE-0430 ' +'-ADAECB477A5248^7' +'-ADAEBC4755751^7' +'12D' +'3' +'1' +'2' +45 +'-AD91FC^7' +'2A3^5' +'-51024364C4639^5' +'B883E22CD53518^3' +'569957D04BB954^4' +'6B3C57F8099304^2' +'-915C71C04C30C^2' +'-2B1B68A4D12EEC^1' +'C950A4AF9241E^0' +'8C7279B61C2D78^-1' +'-1580CC8672C334^-1' +'-1913D57811E9E2^-2' +'278D97358495AA^-3' +'4601E5BC30F42C^-4' +'-4685CE6D707C54^-5' +'2EC82BF1B77216^4' +'-296A7257D2C27E^5' +'-301563035305B4^3' +'73572F3857B904^3' +'169BBFF79477D1^2' +'-9C49C65EB6692^1' +'-50B7B82152159C^0' +'EEC288B0B0B788^-1' +'E8C2C7EA7C61E^-2' +'-1AB5C3F01BA204^-2' +'-286287D6BADAB2^-3' +'304257578A9162^-4' +'6E947FAADCA644^-5' +'-53E77AECBBF5FC^4' +'-F6ACBBAF827488^4' +'5BDB23004A6AEC^3' +'2B9EDBFC37C23A^3' +'-3274B6EA06988A^1' +'-3DC9C49D6B5742^1' +'-E210ED150F2BB8^-1' +'644F2A0795718^-1' +'3BA2A8C9C35D^-2' +'-BF6DBAA8F9C65^-3' +'-BF27C792CB0128^-4' +'1792EE5EEBC227^-4' +'23B5D17709031E^-5' +'-ADBC2C^7' +'546^5' +'29^2' +'1^1' +END_ARRAY 1 45 +BEGIN_ARRAY 2 39 +'DE-0430LE-0430 ' +'-ADAECB477A5248^7' +'-ADAEBC4755751^7' +'A' +'0' +'1' +'2' +39 +'-AE108C^7' +'A8C^5' +'1B7058FBC17A5F^5' +'-17EC8BFFA69FCC^4' +'-FFB653884FB5E^1' +'-2F31BF0F739D54^-1' +'-7F6A4E93591F8^-2' +'653437D37817B8^-3' +'338CBA2D6B4D8C^-4' +'-22652CF2D5CAB4^-5' +'45F8E641B6D78C^-6' +'-92F2B264CBC77^-7' +'65793C82006788^-8' +'DC91643F5A77C8^5' +'107E95C1DBEC27^4' +'-C5C06C04C0795^1' +'20D35F0D4EF3BC^-1' +'-3C1497D6CF528^-2' +'-54C9BDD50E664C^-3' +'6FE9FAD1CB8A2C^-4' +'-178D7F56E2A365^-5' +'62123C4FCF3A7^-6' +'B9277A096AD468^-8' +'B50967B7DAAFA8^-9' +'5E24DC18B88F48^5' +'7CB15853952D18^3' +'-5150DC3EAD99D8^1' +'1397704BC94FBF^-1' +'-AEDCFEADBE2338^-3' +'-3266698E978F8C^-3' +'365A3B2872D194^-4' +'-96E83C074CAB38^-6' +'2D0B40763F0846^-6' +'1530CB44729EDB^-7' +'-2EDCD8E8359FDC^-9' +'-AEB94C^7' +'1518^6' +'23^2' +'1^1' +END_ARRAY 2 39 +BEGIN_ARRAY 3 45 +'DE-0430LE-0430 ' +'-ADAECB477A5248^7' +'-ADAEBC4755751^7' +'3' +'0' +'1' +'2' +45 +'-AE108C^7' +'A8C^5' +'-8D522D75B6521^7' +'-3FCFCE93945218^5' +'ADFEF9C8640218^5' +'-253AAA21EE0C3^3' +'-11F3F452ABF1AF^3' +'EA5CACE6D68688^0' +'BBEF69DCE9CD78^-1' +'-1BED4C3E850E8A^-2' +'557F2DA2E706F8^-3' +'8C34DB03A4665^-4' +'-16ADC2F6F33DCF^-4' +'-D0D3545A51F758^-5' +'-27CAC691DE74E8^-5' +'5974A8CE5900E^5' +'-120905178CB298^7' +'99A149DCE62ED^3' +'3B0D9D2CFF6B32^4' +'-1A7041745EAFE2^2' +'-3B534762B4971E^1' +'563FC03F2F926^-1' +'2ACA5EE45C53B^-2' +'2A6CFF87B4AFB^-4' +'-6849B6E8607148^-4' +'-1CCB84033C3571^-4' +'-33768E0B09CFE8^-5' +'12055C7B0BB337^-5' +'2548BF2EDE6D82^5' +'-7D1BFE69D4141C^6' +'42ABF6ADEC668C^3' +'199A82E86F45E2^4' +'-B76BD94CD5538^1' +'-19B7598B9A9B51^1' +'25C0D2BFA0EDD6^-1' +'10E8E2FF6E4D78^-2' +'-5E56E2707CF55C^-4' +'-2651B7556EBBBE^-4' +'-77F1F667EF7BF8^-5' +'-7686A49A36678^-6' +'78D42CB1FB18EC^-6' +'-AEB94C^7' +'1518^6' +'29^2' +'1^1' +END_ARRAY 3 45 +BEGIN_ARRAY 4 136 +'Segment 5 ' +'-ADAECB477A5248^7' +'-ADAEBC4755751^7' +'-28' +'12D' +'1' +'8' +136 +'7F01A504F1E17^3' +'1AA04EB733019A^3' +'-2B3D83469C63E8^3' +'B46E15EF93703^0' +'-9E4BF7EA86E0D^0' +'178BDDCBC4184C^1' +'7FE0228C78956C^3' +'19D9CE1826BEE5^3' +'-296590A53FE324^3' +'AF8CF40C28E938^0' +'-9F4D460557866^0' +'17A5CCBADF8477^1' +'80B882FD4D73F8^3' +'191210ED0822AE^3' +'-278BA32E394E56^3' +'AAA60790F74D88^0' +'-A0466EDB96958^0' +'17BE8C8CDADABA^1' +'818ABF6C671938^3' +'1849216E6FCB08^3' +'-25AFD29BAEC9D4^3' +'A5B9D3E28EC7E^0' +'-A13762B787E2E8^0' +'17D61C1C854544^1' +'8256D192EA1CA^3' +'177F09E77A4D78^3' +'-23D236BC2E17C8^3' +'A0C8DC9609D508^0' +'-A22013ABA302C^0' +'17EC7A84C51877^1' +'831CB3CE7DC7D^3' +'16B3D4B38DEDEE^3' +'-21F2E76DA86F4C^3' +'9BD3A53FAFD3A8^0' +'-A3007593A0271^0' +'1801A720582BD^1' +'83DC61216AC3C8^3' +'15E78C3C253953^3' +'-2011FC987F6E1E^3' +'96DAB14288E19^0' +'-A3D87E13DCF0B^0' +'1815A1895BEAE6^1' +'8495D531ADB13^3' +'151A3AF68BE328^3' +'-1E2F8E2A949BE5^3' +'91DE83A0CE4CE8^0' +'-A4A82497FD7E2^0' +'18286998BC6B7F^1' +'85490C48DFB6A^3' +'144BEB61AFF764^3' +'-1C4BB4126C912B^3' +'8CDF9ECD4138B^0' +'-A56F624FE40978^0' +'1839FF656B4A51^1' +'85F6035312F438^3' +'137CA803E59A4F^3' +'-1A66863A5490B5^3' +'87DE847E295348^0' +'-A62E322D10957^0' +'184A6343A991B1^1' +'869CB7DE193E08^3' +'12AC7B68C2039^3' +'-18801C83AF5FCC^3' +'82DBB5817B3528^0' +'-A6E490DCB6B5C^0' +'185995C3E12DA5^1' +'873D281829FEF^3' +'11DB701EEDFBF2^3' +'-16988EC2420529^3' +'7DD7B192ADFEA8^0' +'-A7927CC2BF2FD^0' +'186797B1A44F03^1' +'87D752CE01339^3' +'110990B6016A78^3' +'-14AFF4B7A551A^3' +'78D2F731C75FD^0' +'-A837F5F28FB75^0' +'18746A1261E957^1' +'886B376A3F5DC^3' +'1036E7BC7CDC9D^3' +'-12C6660ED2256F^3' +'73CE037C3D0094^0' +'-A8D4FE291CAF3^0' +'18800E244C7E39^1' +'88F8D5F260ED38^3' +'F637FBDA2754D^2' +'-10DBFA57B04414^3' +'6EC952074161F4^0' +'-A96998C3062D6^0' +'188A855CB702D3^1' +'89802F05B13C88^3' +'E8F633F89CB51^2' +'-EF0C902E979DD8^2' +'69C55CBBD4CB3^0' +'-A9F5CAB5204D78^0' +'1893D166C93034^1' +'8A0143DAAB90C8^3' +'DBA9CC11CA6F58^2' +'-D04E95DBA65BA^2' +'64C29BB47FB528^0' +'-AA799A82524DF8^0' +'189BF421D545BB^1' +'8A7C163CAB6F28^3' +'CE536B82BE7D78^2' +'-B18728DEF55AC8^2' +'5FC1851D176D88^0' +'-AAF51031CB9A3^0' +'18A2EF9FB9A7AA^1' +'8AF0A8899C306^3' +'C0F3B8F927701^2' +'-92B7B8E0110F1^2' +'5AC28D148364D^0' +'-AB683544DFA188^0' +'18A8C623352435^1' +'8B5EFDAF06BF78^3' +'B38B5A561F775^2' +'-73E1B295B5BE64^2' +'55C625900B5664^0' +'-ABD314ABD4D5B^0' +'18AD7A1E14F4B9^1' +'8BC71927A4AC48^3' +'A61AF49238D36^2' +'-55067F8C15219C^2' +'50CCBE414B972C^0' +'-AC35BABB2B0A1^0' +'18B10E2F74F72D^1' +'8C28FEF851DA88^3' +'98A32BA1A46448^2' +'-362785ECA86FBA^2' +'4BD6C47D4148C^0' +'-AC90351FA09178^0' +'18B38521D3BFBB^1' +'-ADAED13D07A56^7' +'14^2' +'9^1' +'16^2' +END_ARRAY 4 136 +TOTAL_ARRAYS 4 + ~NAIF/SPC BEGIN COMMENTS~ +; uvvis/LUA3107H.161.clem_1.bsp LOG FILE + +; Created 2023-07-28/10:00:47.00. +; +; BEGIN SPKMERGE COMMANDS + +LEAPSECONDS_KERNEL = /Users/ahibl/astro_efs/base/kernels/lsk/naif0012.tls + +SPK_KERNEL = uvvis/LUA3107H.161.clem_1.bsp + SOURCE_SPK_KERNEL = /Users/ahibl/astro_efs/base/kernels/spk/de430.bsp + INCLUDE_COMMENTS = NO + BODIES = 3, 10, 301 + BEGIN_TIME = 1994 MAR 25 15:12:15.347 + END_TIME = 1994 MAR 25 15:16:15.356 +SOURCE_SPK_KERNEL = /Users/ahibl/astro_efs/Clementine1/kernels/spk/SPKMERGE_940219_940504_CLEMV001b.bsp + INCLUDE_COMMENTS = NO + BODIES = -40 + BEGIN_TIME = 1994 MAR 25 15:12:15.347 + END_TIME = 1994 MAR 25 15:16:15.356 + +; END SPKMERGE COMMANDS + ~NAIF/SPC END COMMENTS~ diff --git a/tests/pytests/data/LUA3107H.161/LUA3107H.161_isis3.lbl b/tests/pytests/data/LUA3107H.161/LUA3107H.161_isis3.lbl new file mode 100644 index 000000000..c2f2a86b4 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/LUA3107H.161_isis3.lbl @@ -0,0 +1,411 @@ +Object = IsisCube + Object = Core + StartByte = 65537 + Format = Tile + TileSamples = 384 + TileLines = 288 + + Group = Dimensions + Samples = 384 + Lines = 288 + Bands = 1 + End_Group + + Group = Pixels + Type = UnsignedByte + ByteOrder = Lsb + Base = 0.0 + Multiplier = 1.0 + End_Group + End_Object + + Group = Instrument + SpacecraftName = "CLEMENTINE 1" + InstrumentId = UVVIS + TargetName = MOON + StartTime = 1994-03-25T15:14:15.347 + OrbitNumber = 161 + FocalPlaneTemperature = 270.227 + ExposureDuration = 9.0624 + OffsetModeID = 2 + GainModeID = 1 + CryocoolerDuration = N/A + EncodingCompressionRatio = 11.71 + EncodingFormat = CLEM-JPEG-1 + End_Group + + Group = Archive + ProductID = LUA3107H.161 + MissionPhase = "LUNAR MAPPING" + End_Group + + Group = BandBin + FilterName = A + Center = 0.415 + Width = 0.04 + End_Group + + Group = Kernels + NaifFrameCode = -40021 + LeapSecond = $base/kernels/lsk/naif0012.tls + TargetAttitudeShape = ($base/kernels/pck/pck00009.tpc, + $base/kernels/pck/lunar_de403_1950-2199_pa.bp- + c, $base/kernels/fk/lunarMeanEarth001.tf) + TargetPosition = (Table, $base/kernels/spk/de430.bsp) + InstrumentPointing = (Table, $Clementine1/kernels/ck/clem_2mn.bck, + $Clementine1/kernels/ck/clem_5sc.bck, + $clementine1/kernels/fk/clem_v12.tf) + Instrument = $Clementine1/kernels/ik/clem_uvvis_beta_ik_v0- + 4.ti + SpacecraftClock = $Clementine1/kernels/sclk/dspse002.tsc + InstrumentPosition = (Table, + $Clementine1/kernels/spk/SPKMERGE_940219_9405- + 04_CLEMV001b.bsp) + InstrumentAddendum = $Clementine1/kernels/iak/uvvisAddendum004.ti + ShapeModel = $base/dems/ldem_128ppd_Mar2011_clon180_radius- + _pad.cub + InstrumentPositionQuality = Reconstructed + InstrumentPointingQuality = Reconstructed + CameraVersion = 1 + Source = ale + End_Group +End_Object + +Object = Label + Bytes = 65536 +End_Object + +Object = Table + Name = InstrumentPointing + StartByte = 181926 + Bytes = 64 + Records = 1 + ByteOrder = Lsb + TimeDependentFrames = (-40000, 1) + ConstantFrames = (-40021, -40002, -40000) + ConstantRotation = (-0.006108611041259, -0.99996607260776, + -0.0055261654481643, 0.99998079393998, + -0.0061027272118314, -0.0010809587141711, + 0.0010471973598032, -0.0055326624686356, + 0.99998414638618) + CkTableStartTime = -182119484.46283 + CkTableEndTime = -182119484.46283 + CkTableOriginalSize = 1 + FrameTypeCode = 3 + Description = "Created by spiceinit" + Kernels = ($Clementine1/kernels/ck/clem_2mn.bck, + $Clementine1/kernels/ck/clem_5sc.bck, + $clementine1/kernels/fk/clem_v12.tf) + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = InstrumentPosition + StartByte = 181990 + Bytes = 56 + Records = 1 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = -182119484.46283 + SpkTableEndTime = -182119484.46283 + SpkTableOriginalSize = 1.0 + Description = "Created by spiceinit" + Kernels = $Clementine1/kernels/spk/SPKMERGE_940219_940504_CLEM- + V001b.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = BodyRotation + StartByte = 182046 + Bytes = 64 + Records = 1 + ByteOrder = Lsb + TimeDependentFrames = (310002, 1) + ConstantFrames = (310001, 310003, 310000, 310002) + ConstantRotation = (0.99999987852709, -3.09789127116553e-04, + 3.83375135592436e-04, 3.09789421617701e-04, + 0.999999952015, -7.08797549693787e-07, + -3.83374897618408e-04, 8.27563025111877e-07, + 0.9999999265115) + CkTableStartTime = -182119484.46283 + CkTableEndTime = -182119484.46283 + CkTableOriginalSize = 1 + FrameTypeCode = 3 + Description = "Created by spiceinit" + Kernels = ($base/kernels/spk/de430.bsp, + $base/kernels/pck/pck00009.tpc, + $base/kernels/pck/lunar_de403_1950-2199_pa.bpc, + $base/kernels/fk/lunarMeanEarth001.tf) + SolarLongitude = 128.56316186662 + + Group = Field + Name = J2000Q0 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Q3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV1 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV2 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = AV3 + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = Table + Name = SunPosition + StartByte = 182110 + Bytes = 56 + Records = 1 + ByteOrder = Lsb + CacheType = Linear + SpkTableStartTime = -182119484.46283 + SpkTableEndTime = -182119484.46283 + SpkTableOriginalSize = 1.0 + Description = "Created by spiceinit" + Kernels = $base/kernels/spk/de430.bsp + + Group = Field + Name = J2000X + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Y + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000Z + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000XV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000YV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = J2000ZV + Type = Double + Size = 1 + End_Group + + Group = Field + Name = ET + Type = Double + Size = 1 + End_Group +End_Object + +Object = History + Name = IsisCube + StartByte = 182166 + Bytes = 6984 +End_Object + +Object = OriginalLabel + Name = IsisCube + StartByte = 176530 + Bytes = 5396 +End_Object + +Object = NaifKeywords + BODY301_LONG_AXIS = 0 + BODY301_NUT_PREC_DEC = (1.5419, 0.0239, -0.0278, 0.0068, 0, + -0.0029, 0.0009, 0, 0, 0.0008) + BODY301_NUT_PREC_PM = (3.561, 0.1208, -0.06419999999999999, + 0.0158, 0.0252, -0.0066, -0.0047, -0.0046, + 0.0028, 0.0052) + BODY301_NUT_PREC_RA = (-3.8787, -0.1204, 0.07000000000000001, + -0.0172, 0, 0.0072, 0, 0, 0, -0.0052) + BODY301_PM = (38.3213, 13.17635815, -1.4e-12) + BODY301_POLE_DEC = (66.53919999999999, 0.013, 0) + BODY301_POLE_RA = (269.9949, 0.0031, 0) + BODY301_RADII = (1737.4, 1737.4, 1737.4) + BODY_CODE = 301 + BODY_FRAME_CODE = 310001 + FRAME_-40021_CENTER = -40 + FRAME_-40021_CLASS = 4 + FRAME_-40021_CLASS_ID = -40021 + FRAME_-40021_NAME = CLEM_UVVIS_A + INS-40021_BORESIGHT = (0, 0, 1) + INS-40021_BORESIGHT_LINE = 144.5 + INS-40021_BORESIGHT_SAMPLE = 192.5 + INS-40021_CCD_CENTER = (512.5, 512.5) + INS-40021_CK_FRAME_ID = -40002 + INS-40021_CK_REFERENCE_ID = -40000 + INS-40021_CK_TIME_BIAS = 0 + INS-40021_CK_TIME_TOLERANCE = 1 + INS-40021_DECENTER = (2.255006e-05, 2.108941e-05) + INS-40021_F/RATIO = -999.9999 + INS-40021_FILTER_BANDCENTER = 415 + INS-40021_FILTER_BANDWIDTH = 40 + INS-40021_FILTER_NAME = A + INS-40021_FOCAL_LENGTH = 89.874444 + INS-40021_FOV_ANGLE_UNITS = DEGREES + INS-40021_FOV_CLASS_SPEC = ANGLES + INS-40021_FOV_CROSS_ANGLE = 2.1085 + INS-40021_FOV_FRAME = CLEM_UVVIS_A + INS-40021_FOV_REF_ANGLE = 2.8115 + INS-40021_FOV_REF_VECTOR = (1, 0, 0) + INS-40021_FOV_SHAPE = RECTANGLE + INS-40021_IFOV = -999.999 + INS-40021_ITRANSL = (0, 0, 43.47826087) + INS-40021_ITRANSS = (0, 43.47826087, 0) + INS-40021_LIGHTTIME_CORRECTION = NONE + INS-40021_LT_SURFACE_CORRECT = TRUE + INS-40021_OD_K = (0, -2.422842e-05, 0) + INS-40021_PIXEL_LINES = 288 + INS-40021_PIXEL_PITCH = 0.023 + INS-40021_PIXEL_SAMPLES = 384 + INS-40021_PIXEL_SIZE = (0.023, 0.023) + INS-40021_PLATFORM_ID = -40000 + INS-40021_PP = (0, 0) + INS-40021_SPK_TIME_BIAS = 0 + INS-40021_SWAP_OBSERVER_TARGET = TRUE + INS-40021_TRANSX = (0, 0.023, 0) + INS-40021_TRANSY = (0, 0, 0.023) + OBJECT_301_FRAME = LUNAR_MEAN_EARTH + TKFRAME_-40021_ANGLES = (-0.00553269372882, -0.0010471975512, + 1.57690497917688) + TKFRAME_-40021_AXES = (1, 2, 3) + TKFRAME_-40021_RELATIVE = CLEM_UVVIS + TKFRAME_-40021_SPEC = ANGLES + TKFRAME_-40021_UNITS = RADIANS +End_Object +End diff --git a/tests/pytests/data/LUA3107H.161/clem_5sc_0_sliced_-40000.xfr b/tests/pytests/data/LUA3107H.161/clem_5sc_0_sliced_-40000.xfr new file mode 100644 index 000000000..e51a100d5 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/clem_5sc_0_sliced_-40000.xfr @@ -0,0 +1,416 @@ +DAFETF NAIF DAF ENCODED TRANSFER FILE +'DAF/CK ' +'2' +'6' +'CREATED USING ORIGINAL CLEM CK BY NAIF, JPL; DEC 11, 1995 ' +BEGIN_ARRAY 1 395 +'5 SEC SPACED ATT. DATA INTERVALS ONLY ' +'A27CE276CA1^B' +'A27CE44CCA4^B' +'-9C40' +'1' +'3' +'1' +395 +'E269B18D926E38^0' +'-3357F97D81F0A4^0' +'6A8AEB56E335DC^0' +'10E7223105E5FD^0' +'11B1B62E943786^-2' +'-13CC1BDFE1A114^-2' +'-90D40A9DA6031^-3' +'E2320838CABC58^0' +'-3356AB85C0521^0' +'6AFD53ADB13DF8^0' +'110196D7D41BF5^0' +'2085556085419E^-2' +'-3549CAEC5836E2^-2' +'-16C5E39087D18F^-2' +'E1F36F1E05CBE^0' +'-3363D801DB34B4^0' +'6B76C295E0676^0' +'111C371FBCCBF3^0' +'1994BFAA9564A4^-2' +'-628DB93670D1B4^-2' +'-1493DBAD4D911F^-2' +'E1B81D3813D4A^0' +'-336248E63D5358^0' +'6BED7AE70A19B^0' +'11446A5447F1F7^0' +'364707512D0F36^-2' +'-324CAE8C3D24B^-2' +'-1AB3A331E255BB^-2' +'E1856DC2585358^0' +'-334F277D083F7A^0' +'6C5C09F2374E68^0' +'115F12FAE52B8^0' +'B364C4D05777^-3' +'-41899481921DE^-2' +'-1687AB680C7E6D^-2' +'E14E5B86950378^0' +'-33372AB871D0A4^0' +'6CD5B9078FF33C^0' +'1177B2830B648D^0' +'107508F21B0EEE^-2' +'-323CBB4BFAD912^-2' +'-713F202928E8C8^-3' +'E10B2E347214C^0' +'-334C5ADF312F7A^0' +'6D53E4E755D7B4^0' +'11878FDE452B3^0' +'-17FE43BBC66C8C^-2' +'-259BB1AD5073C2^-2' +'20FFCF920C1F08^-2' +'E0DB30BD04BBE^0' +'-333B2AD9A2D418^0' +'6DB9E7C8A155E4^0' +'11A431A585A5EF^0' +'-F4363205C828B8^-3' +'-1A97135DC80054^-2' +'-273090494AD46A^-2' +'E0AACF4E0062B^0' +'-331C6D28B619B2^0' +'6E278355628C94^0' +'11BAA26AA3DC25^0' +'-1FDD9957E77999^-2' +'-E28AA5B4FCCD58^-3' +'-1409185676DB04^-2' +'E0634C821EE428^0' +'-332B661B3175C2^0' +'6EAB91B74AD64^0' +'11E27F9B99A445^0' +'-1B0095E9F456D1^-2' +'-4125895A1AA47^-2' +'-3BE95DB487F4AE^-3' +'E02BFC7B7AC13^0' +'-3323CB8DDCCF86^0' +'6F1AE2A5B8989C^0' +'11FBA3E1E083B6^0' +'-10B70184A75AC7^-2' +'-2053190774A62A^-2' +'-1A9CC320515482^-2' +'DFFCDC2170F4B8^0' +'-33098C75B6A47^0' +'6F82F19A9362A4^0' +'120D4FD575DF82^0' +'-20CBAA621EC804^-2' +'-473236A8FB2EC^-2' +'-F5A55BE27EEE8^-3' +'DFCDB0C666AA78^0' +'-32FAA5E79FFF46^0' +'6FE3FCE6A3BDD4^0' +'1227E35E5EFA28^0' +'-2D86030FA3D838^-2' +'-380F6B4EE628EA^-2' +'-1A17656A7218E9^-2' +'DF8736140153F8^0' +'-32FC92CF47C93E^0' +'706A6AE59ED1B4^0' +'124836ACF2B18B^0' +'-EB2B45528ABF8^-3' +'-1A5D487A3A4D38^-2' +'-27890C9E6867DC^-2' +'DF484E5C2C001^0' +'-32EB5F9361AA52^0' +'70EBDBF9DE5DD^0' +'125B16391016D7^0' +'-47095D29CAB82C^-2' +'-1091C7D7FE69FD^-2' +'-2BE1AC07FC276E^-2' +'DF0B032A9A18E8^0' +'-32EEC694CDF41C^0' +'715EA074C1D11C^0' +'127751AC24959A^0' +'471F95572DD9D^-3' +'-358F6863B06C7E^-2' +'-198F5A61DAD4EA^-2' +'DED6145AD2BA5^0' +'-32E4CC9808F686^0' +'71C65AB5D34D9^0' +'1293D634101CCB^0' +'-FF978B004878C^-3' +'-2937526DA5D998^-2' +'-1F1AD1F45203B6^-2' +'DEA0691CB69EA^0' +'-32E1C68CC557F^0' +'722A784B1FF70C^0' +'12B93B00C27ABC^0' +'-12926BF4C347F9^-2' +'-25E43821752E7A^-2' +'-E6097DBAF8F6B8^-3' +'DE6245B6D162A8^0' +'-32C56928E453A^0' +'72AF529ACD4174^0' +'12BCC1B54B7E58^0' +'-12925AF46A76F4^-2' +'-25E0D755BCEDCC^-2' +'-E6E0B49B9759C8^-3' +'DE2282E24A00A^0' +'-32C1C0EDB4FC1E^0' +'7327E028ED01AC^0' +'12D7890665FAEB^0' +'-166534D6DF4FE3^-2' +'-4739B6617C010C^-2' +'-266979A3AA2E86^-2' +'DDEA699B6B0DB^0' +'-32B1B0FB638556^0' +'73919FC12BFA3C^0' +'131007EC8BF9D6^0' +'23CB7248FEF6F4^-2' +'-3F189A901F58A8^-2' +'-8DBF7523134558^-4' +'DDAB9A2859AA6^0' +'-32AFBA64E694BA^0' +'7407E3E6D155CC^0' +'13219578D158CA^0' +'F8270A9B14B6E8^-3' +'-329E1F631D62BE^-2' +'-6591364CBF72FC^-3' +'DD702528267418^0' +'-32AECED3233598^0' +'7477796294A708^0' +'132E8906340BA8^0' +'15D51F8E40432E^-2' +'-424CE5C72731F^-2' +'-2BE8AD0C3D709^-2' +'DD3D2ED7A591B8^0' +'-329A652ADFF716^0' +'74E0A44DE2684C^0' +'1330CDB86E0B05^0' +'22C84F924C97C2^-2' +'-307B59FE85DA82^-2' +'-210D9E7B70480C^-2' +'DCF9358FA3B208^0' +'-32955EBFE800B6^0' +'755BD3AC100EB^0' +'135D3B5021560D^0' +'180F4A6146454A^-2' +'-39120A9B48484C^-2' +'-F4B1A679AF9308^-3' +'DCB6D7910B123^0' +'-3290577AC1CA44^0' +'75D444541F36^0' +'1383B6B1C42C0C^0' +'32BDCE2D57E13^-2' +'-5573C8761DB4FC^-2' +'-2E956099A9B5B8^-2' +'DC76A533E8319^0' +'-3289889A939BE4^0' +'76487D225E1698^0' +'13ABC15E3E60E2^0' +'26FDAE334B0B78^-2' +'-187A138C069DC8^-2' +'-CC976933123E78^-3' +'DC43090EDEEB7^0' +'-327C864E75E504^0' +'76AD004D8AF06^0' +'13B1EBC2C2B4B5^0' +'418BC44FF49678^-2' +'-3A9B6A99E7C83C^-2' +'-6D70BA8B6016E4^-3' +'DC09A896D851C8^0' +'-325E1D4A65C5EE^0' +'772251F4F6D8B4^0' +'13BCD5DAA36E9D^0' +'23F9E5EBEBEFB2^-2' +'-42FD47032818A4^-2' +'-28A5E6AFFC497A^-2' +'DBC6988505D4B^0' +'-326834FE6223C8^0' +'7792340B7B4D78^0' +'13E9800883B69A^0' +'1AAC2146308172^-2' +'-3371D0EA56EFEE^-2' +'-1B87E73D6269CC^-2' +'DB8822AAFB8F7^0' +'-3263E0A8D55A24^0' +'78027F01835E9C^0' +'1401DC8CDF0CC^0' +'-A528FD56CA8FB8^-3' +'-22D0AD9F76D26^-2' +'-143B108A4BBA5B^-2' +'DB4CD42F0B41F8^0' +'-324EE8C9D43A12^0' +'78748BB04275B4^0' +'1413A0D90BABA4^0' +'19987875BE43A8^-3' +'-3B63D9370C8632^-2' +'-CF1E05FFA19AD8^-3' +'DB02B119A3853^0' +'-324C2EB2822AE^0' +'78F4E72C1C7D^0' +'143FD4035461B7^0' +'-CB4979872C21E8^-3' +'-19C28F715A9362^-2' +'-28A94668959718^-2' +'DACA68949B1A8^0' +'-323C0A06E73D8A^0' +'795E87A1799C1C^0' +'145049EFD978C3^0' +'-15B8A8545441B9^-2' +'-2B2A2B60C5D37A^-2' +'-31B35DB687D78^-3' +'DA9547973D53F^0' +'-32303509ABB896^0' +'79C18745D7AB8C^0' +'14590D451C08A6^0' +'-ABFFA2193414A^-3' +'-19A2B06CDC3425^-2' +'-104D4A24BDE47F^-2' +'DA52ED475BFDD^0' +'-3226D83CBC9008^0' +'7A3590370D20CC^0' +'1480BB4A7B7754^0' +'-4ECE4944D5A144^-3' +'-25F09121AFDA2E^-2' +'-C9F5809832F9C^-3' +'DA0EEBB8DE9E2^0' +'-322222C33CF434^0' +'7AABA4026E36CC^0' +'149EBE13208E21^0' +'-286E12326E16E^-2' +'-303927B3DD64FC^-2' +'-128914A9EB4C1E^-2' +'D9C689CE39F5D^0' +'-32176810C65134^0' +'7B2D73A8218AB8^0' +'14AFE38DF22A21^0' +'-286C0357D8C7F4^-2' +'-302EBF46D9DE12^-2' +'-12B558E7CCC146^-2' +'D999230368C488^0' +'-320683644AE4BA^0' +'7B81B90278C53^0' +'14C00C83FB7B74^0' +'-2CBFCAFB135664^-2' +'-14EB143E520129^-2' +'-376F26330F7838^-2' +'D9554D6471D768^0' +'-31F82CA56B4CDC^0' +'7BF7DF3E188D2^0' +'14E8CFA732F767^0' +'-207AA68DD7C7F2^-2' +'-4E93850B6FEF18^-2' +'1191ADF23094F^-3' +'D911D019C8BCC^0' +'-31FBC5B04F1084^0' +'7C689EB28CA838^0' +'14FF93601C47B1^0' +'-3C83838879C2E8^-3' +'-25D8F5123245C4^-2' +'BB843667227D3^-3' +'D8CC645E30ED08^0' +'-31DC7811F49B62^0' +'7CEAFFC236522C^0' +'15111E53B25A61^0' +'-68B553060A543^-3' +'-A8EDB59364C1A8^-3' +'-789BB3643162F4^-4' +'D88D026F2DB2F8^0' +'-31D6F4F2CA35D^0' +'7D5512F84543E4^0' +'1533EB777D7D5^0' +'D2FF80F08D1E1^-3' +'-20E38097B9840E^-2' +'2C9CA60707B7C8^-3' +'D84D9FDE4FFB6^0' +'-31D7D9553594EC^0' +'7DBE994F8DF618^0' +'1547FDB4393493^0' +'-58F433451C260C^-3' +'-1CC0A47448A457^-2' +'-8B8CBB68D343C^-3' +'D81179655752E8^0' +'-31C85F3F9B4962^0' +'7E26CD27920DF8^0' +'156678BF49593C^0' +'223AC9D68A01E6^-2' +'-52A6FF0433E93^-2' +'-60633F566020E4^-3' +'D7CCAE743CFA58^0' +'-31B874DBF859F8^0' +'7E9D9E984546D8^0' +'1583D31A58B8D1^0' +'-C84AA8E6E6C6D8^-3' +'-4CB580A1291DF^-2' +'-3163215AB0AA74^-2' +'D782458D32BCB^0' +'-31C0542DED931^0' +'7F15E6C90EE16C^0' +'159643B454DAEB^0' +'FFE7C45BFC415^-3' +'-579D81BD395654^-2' +'-15A95DFBD9F804^-2' +'D752DC6B7ABFC8^0' +'-3199499F1CBC36^0' +'7F7195E52F688C^0' +'15ACA7156CC643^0' +'12154AFE3BE27C^-2' +'-3FAC8F20CB2ECE^-2' +'-3234D02DBF6B14^-2' +'D717B9E6DABF6^0' +'-3197E619797D72^0' +'7FD20B395AC984^0' +'15C2F03CDD9104^0' +'B64A02347687E^-3' +'-41A7D0247EB95C^-2' +'-1A88BB3E99EC54^-2' +'A27CE276CA1^B' +'A27CE27FDE8^B' +'A27CE289B6^B' +'A27CE2938D8^B' +'A27CE29D65^B' +'A27CE2A73E8^B' +'A27CE2B116^B' +'A27CE2BAED8^B' +'A27CE2C4C5^B' +'A27CE2CE9E8^B' +'A27CE2D876^B' +'A27CE2E24D8^B' +'A27CE2EC25^B' +'A27CE2F5FE8^B' +'A27CE2FFD68^B' +'A27CE309AE^B' +'A27CE313858^B' +'A27CE31D5D^B' +'A27CE327368^B' +'A27CE3310E^B' +'A27CE33AE58^B' +'A27CE344BD^B' +'A27CE34E968^B' +'A27CE3586E^B' +'A27CE362458^B' +'A27CE36C1D^B' +'A27CE375F68^B' +'A27CE37FCE^B' +'A27CE389A58^B' +'A27CE3937D^B' +'A27CE39D568^B' +'A27CE3A72E^B' +'A27CE3B1058^B' +'A27CE3BADD^B' +'A27CE3C4B68^B' +'A27CE3CE8E^B' +'A27CE3D8658^B' +'A27CE3E23D^B' +'A27CE3EC168^B' +'A27CE3F5EE8^B' +'A27CE3FFC6^B' +'A27CE409A1^B' +'A27CE4137A8^B' +'A27CE41D52^B' +'A27CE4272A^B' +'A27CE431018^B' +'A27CE43AD9^B' +'A27CE444B28^B' +'A27CE44CCA4^B' +'A27CE276CA1^B' +'1^1' +'31^2' +END_ARRAY 1 395 +TOTAL_ARRAYS 1 + ~NAIF/SPC BEGIN COMMENTS~ +This CK is for testing with the image: /Users/ahibl/astro_efs/test_imgs/uvvis/LUA3107H.161.clem.cub + +This CK was generated using the following command: {} + ~NAIF/SPC END COMMENTS~ diff --git a/tests/pytests/data/LUA3107H.161/clem_5sc_1_sliced_-40000.xfr b/tests/pytests/data/LUA3107H.161/clem_5sc_1_sliced_-40000.xfr new file mode 100644 index 000000000..f82b5ab42 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/clem_5sc_1_sliced_-40000.xfr @@ -0,0 +1,416 @@ +DAFETF NAIF DAF ENCODED TRANSFER FILE +'DAF/CK ' +'2' +'6' +'CREATED USING ORIGINAL CLEM CK BY NAIF, JPL; DEC 11, 1995 ' +BEGIN_ARRAY 1 395 +'5 SEC SPACED ATT. DATA INTERVALS ONLY ' +'A27CE644F98^B' +'A27CE819BE1^B' +'-9C40' +'1' +'3' +'1' +395 +'C8BCC7A932ACF8^0' +'-2F21B48D4D120E^0' +'95568A1F2FD1E8^0' +'1AC80898AA1B25^0' +'-1A356A6316A9DD^-3' +'-44097BEFE9844C^-2' +'-11A9E0C6A96F16^-2' +'C87CAC1A647C9^0' +'-2F172CF4BD39EA^0' +'95AD81D7FEF21^0' +'1AD541D79DE4EF^0' +'-B4CA209F6151D^-3' +'-3CE26C95F93AFA^-2' +'-B5BA4850809C3^-3' +'C83967BE859F2^0' +'-2F1E0F80052C2A^0' +'96022B5873F928^0' +'1AE6A37543D974^0' +'-1123308872F366^-2' +'-3545624E1EE1E^-2' +'-1CFDBEF183019F^-2' +'C7E4B5891350E^0' +'-2F0CF3EA4448B^0' +'9674CDB5021D48^0' +'1AFA3C62B52384^0' +'DF1C1A46D0D9B8^-3' +'-2B0E67D6BA2BDE^-2' +'-176B638D9E0C69^-2' +'C7958885EBC348^0' +'-2F0039AC037A86^0' +'96DC255A061258^0' +'1B196FF4A35B9D^0' +'15B8C543630091^-2' +'-37DE134BCE511E^-2' +'-2AC6065B2FD53E^-2' +'C741CA03176DD^0' +'-2EEFE37763038C^0' +'974D601CB88AE8^0' +'1B26BCF6EDA516^0' +'72DAF2DE9B7D38^-3' +'-30864BED00AA72^-2' +'-C2860E02FDD5D8^-3' +'C70E1A144D0A9^0' +'-2EDAD98C7C95DC^0' +'97943A9EA47078^0' +'1B3AFA7D37BF3E^0' +'15D283FFFD82F5^-2' +'-37F0DFF67EF668^-2' +'-2A9C635D34D222^-2' +'C6B6FBED4682C^0' +'-2ED4E1FBE9E892^0' +'98025F0A7BC5A8^0' +'1B5B79D1F2B6A6^0' +'1E0BE7D42EA071^-2' +'-436DDEF90F9A98^-2' +'-1010297940CF9C^-2' +'C65927AC159B^0' +'-2ECC9146928F7C^0' +'987A2B24DF13E8^0' +'1B77E49B1A3B1D^0' +'3148B809F352A^-2' +'-3F0FFE27A66F52^-2' +'195E153B79CD41^-2' +'C617578C98CE18^0' +'-2EAE92BB6F8D58^0' +'98D48A0BD1301^0' +'1B8F967BAC847F^0' +'34EE44C29BB82^-2' +'-2CD557D6235462^-2' +'9B80683715DE1^-3' +'C5CB9C01B53EE8^0' +'-2EA3783A9059BA^0' +'9935CC1CA61DB8^0' +'1BA6477B6DC98F^0' +'-64C08E369EAD44^-3' +'-1C0547B4F4E292^-2' +'-A9241DF8DCF028^-3' +'C56EC485CB8F38^0' +'-2EA7EE0F1D1DF^0' +'99A6F531BEDE08^0' +'1BC24E002E4846^0' +'-8534D57DF394A^-3' +'-21440A58D3DA0A^-2' +'-1798704B4C610D^-2' +'C5329D82BD71A8^0' +'-2E9185B8631B28^0' +'99F8384102D6B8^0' +'1BD1385EE86134^0' +'-1A21162039137^-2' +'-15DE6965EDAD64^-2' +'-25326377D8DD7A^-3' +'C4E3FA19080CF8^0' +'-2E7F898DD83FE2^0' +'9A5DFF4B14^0' +'1BE83C3AD369AB^0' +'-254C519F01B6E4^-2' +'-25A64A948578E^-2' +'-116FF231A7675E^-2' +'C4927E18748E38^0' +'-2E6C0126D1C346^0' +'9AC68064385E1^0' +'1C044C19DEAC67^0' +'-17BE03D9EB04AC^-2' +'-19A37B6F573E77^-2' +'65C65DE6192F44^-3' +'C43C542E08172^0' +'-2E622900201C4E^0' +'9B33574D3B143^0' +'1C16825D3E6BB7^0' +'-2A1A2905637B04^-2' +'-1DC51F887E7134^-2' +'-238C3E47510FDC^-2' +'C3ED176F54346^0' +'-2E58BFA039B3B8^0' +'9B970CB298916^0' +'1C278B52D236E1^0' +'3606FFDADB2AFE^-3' +'-1A864F2C56375D^-2' +'-CB50E51D90D5C^-3' +'C3A8A3EA8A1018^0' +'-2E4970EEA1F77^0' +'9BE9C16DA71EE^0' +'1C531663ADE7C9^0' +'-12C3D5DE1DB57F^-2' +'-2A67DA03432F68^-2' +'13CCCBC637709E^-2' +'C35386199A874^0' +'-2E37EDC3EEAA36^0' +'9C558EF511548^0' +'1C68E905B020B2^0' +'BCF29C3B2A729^-3' +'-2771F57BDF340A^-2' +'-1FBB3AFD328EA^-2' +'C30864BC2CEBE^0' +'-2E2E1E9F30B966^0' +'9CB53BB705A1C^0' +'1C6DE7B2281CBB^0' +'E7004EBC8A902^-3' +'-54FBC39DDC4C2C^-2' +'-342E90CA3FFAB6^-2' +'C2AE3A193727B^0' +'-2E205BACFA9E4E^0' +'9D23ED5B44C218^0' +'1C8B2FEC994F07^0' +'235153A066E464^-2' +'-236EC969526DA4^-2' +'-D4E8C26C20A0B^-3' +'C2631B451C9DF8^0' +'-2E13EDBC1A83B2^0' +'9D7F95FB8B047^0' +'1CA6008DAF3FDE^0' +'8C0D6964A490D8^-3' +'-348CC1AD033664^-2' +'-302938E5DFDFD6^-3' +'C218667B3D8458^0' +'-2E0945A7AB4C16^0' +'9DDADCEDA9342^0' +'1CBB3FA9413158^0' +'2BF01FBCC70DFE^-2' +'-307DB242858AAA^-2' +'-1FFD691F3CBEFB^-2' +'C1C23B3D91AE98^0' +'-2DF8F0A3F07B6A^0' +'9E451A035FA11^0' +'1CD2837D2B992C^0' +'-D87335188A5DC^-3' +'-2A326ECCDFD3B2^-2' +'-4667A57C059578^-3' +'C173A9CFE76B08^0' +'-2DE4A846B2BC4A^0' +'9EA7057B4E171^0' +'1CE8368A3143E1^0' +'103E3B13F0364C^-2' +'-2F5E59CA0D9E04^-2' +'-D94C36220FC6C^-3' +'C1241F2644D24^0' +'-2DD450664D4F1A^0' +'9F085738241C18^0' +'1CFF393F81DFBF^0' +'1770185FCFF0E5^-2' +'-93AD63596B9DA8^-4' +'5540EB714DFE78^-3' +'C0E54FABF27A4^0' +'-2DD17C75673244^0' +'9F501FBA993A3^0' +'1D1BB269C17D42^0' +'-164814FCA44BFA^-4' +'-1BC20C86FE30F^-2' +'-22B87AA9A1D622^-2' +'C0879DE1D41FA^0' +'-2DC41CC4CEBEA2^0' +'9FC0C9A3473E28^0' +'1D3388A1076378^0' +'-25A2AAB7A18BE6^-2' +'-3C19745184F5D4^-2' +'-28BFE44566E9AC^-2' +'C036D69B3C0188^0' +'-2DAC4C013875E8^0' +'A026F8EFE7B21^0' +'1D3D3D62126D06^0' +'-3E06787FF7644^-2' +'-24735C78301EDC^-2' +'-2F93CB9D9AFDAC^-2' +'BFE51D6BACCE48^0' +'-2D91FFB5042C54^0' +'A089C2A37B533^0' +'1D613BAFD37301^0' +'466B5424B8AEC^-3' +'-2CC00D61254F56^-2' +'-14D7541D15FBD8^-2' +'BF92379747A0C8^0' +'-2D97EC4A278014^0' +'A0E74E29F8F6B8^0' +'1D75461C0ED9D5^0' +'-D72FF9428A6F08^-3' +'B6E38DA64244E^-3' +'-19DE4B887EE659^-2' +'BF3F3C62479738^0' +'-2D8829DF99CF12^0' +'A149B963513AA8^0' +'1D8E93080FE874^0' +'715B30CE0BA84C^-3' +'-1BB84AD8A025F2^-2' +'-3A4F26CDE87A1E^-2' +'BEF5820459CE8^0' +'-2D763CBEE1E6F^0' +'A1A36A8C5DE33^0' +'1D9CE1A3A370AB^0' +'-16C9B07D230DD2^-2' +'-3D603EAC64AEAC^-2' +'-BBCE9073327698^-3' +'BE9E9F3F4F8CF8^0' +'-2D694C3C4363C4^0' +'A20B358CBC823^0' +'1DA94268C880F4^0' +'1745F27E103311^-2' +'-500BB3DCFEBAD^-2' +'-3E13589A50A0C^-2' +'BE5951E6D812D^0' +'-2D509B978954B6^0' +'A25C67D3D7C49^0' +'1DCFF4EC207B27^0' +'15C304DD672AD1^-2' +'-34BED857F4BEE4^-2' +'-31BA4806B2561E^-2' +'BE024053512E9^0' +'-2D4B799C08DC1^0' +'A2BF807B8D3168^0' +'1DE6D1B55A9226^0' +'121412E6D0357F^-2' +'-3CB1647E6550A2^-2' +'-82A0C63FA12218^-3' +'BDAA7E2F2F1EB^0' +'-2D2CB61DF3D59C^0' +'A32BD4F0B3FA08^0' +'1DF41E32E67CF2^0' +'35D3FC884E58B8^-2' +'-77FA5DE8C3B16^-2' +'-125D07FF1E068F^-2' +'BD5C903C111CB8^0' +'-2D263D5DF00F92^0' +'A3843555060FA^0' +'1E08F67910BE25^0' +'-6F87668C90C8CC^-3' +'-129334433FD79F^-2' +'-748889938431F4^-3' +'BD04F36D63F56^0' +'-2D3AFAA238AA3C^0' +'A3DDAF5ED8F44^0' +'1E29E903DA796^0' +'-560B3A6AEB156^-3' +'-2DDFAD20932434^-2' +'-13A5583EBBF9B^-2' +'BCC3CF5FF9271^0' +'-2D0802B64414B8^0' +'A43361E95072B8^0' +'1E3C0B1502F6BF^0' +'FD153AD9495B8^-3' +'-2FB57874FAE9EA^-2' +'-CE41B30F036D68^-3' +'BC6C3BAC0FF688^0' +'-2CF1403BFC3736^0' +'A49A3FC5ADA058^0' +'1E50D114B280D4^0' +'-1AA433675703FB^-2' +'-2BF88CFD5550A8^-2' +'-1A789BE77D5271^-2' +'BC188571F8A3D8^0' +'-2CEDCEDE1559E2^0' +'A4F3F0B1FEB54^0' +'1E762BB7C75BAD^0' +'-19B69DB5D14B69^-2' +'-26CA451BFCA4EC^-2' +'-D72101EB48A178^-3' +'BBC332C15095E8^0' +'-2CE6F2437F7BFC^0' +'A555AEAC01E25^0' +'1E7CC7618764CC^0' +'29952D610A229E^-3' +'-1FAB363051FE8C^-2' +'-19BC73938A6AE3^-2' +'BB5DAB218EE6C^0' +'-2CE862CD95959E^0' +'A5C601E8C99A78^0' +'1E89534CC88A8A^0' +'-AE7BE259C6B9C8^-3' +'-67C3FFE43735B^-3' +'-22A54E194136CE^-2' +'BB1F93DAE83BA^0' +'-2CC142ACB1FB8E^0' +'A61048BB0D0648^0' +'1EABD7C5CE23DF^0' +'-15842C39DA55A^-2' +'-C8DE08BBB4EA28^-3' +'-2EDE7CC78A2F7^-2' +'BAD36991C74B3^0' +'-2CA7EA2B62A602^0' +'A667E869D0A158^0' +'1EC623F332B484^0' +'-B3F165BC71BE6^-3' +'2AB0E4F26F882A^-3' +'-1E9D8675ECA9CE^-2' +'BA78BA63A666A8^0' +'-2CB1B69065A178^0' +'A6CB82B935E25^0' +'1EC2B61DFB5151^0' +'BD24B07080C2^-3' +'-3203F21A7AD552^-2' +'-390D7C3BD4DD9C^-2' +'BA25B70BAF785^0' +'-2C9C5F40BF55C^0' +'A7288B59797378^0' +'1EDF6A9C431F47^0' +'7648A64182DD64^-3' +'-3DFCC58C807F02^-2' +'-6A8A168D279478^-3' +'B9F27CD2CF4E6^0' +'-2C89E9E57CA14C^0' +'A76166D51D7718^0' +'1EFAACE12693E5^0' +'12DAC41F8D80BD^-2' +'-40D05B42F9914^-2' +'-1F3AC17CC6F4^-2' +'A27CE644F98^B' +'A27CE64E69^B' +'A27CE658428^B' +'A27CE6621A^B' +'A27CE66BF18^B' +'A27CE675C9^B' +'A27CE67FA28^B' +'A27CE6897A^B' +'A27CE693518^B' +'A27CE69D29^B' +'A27CE6A7028^B' +'A27CE6B0DA^B' +'A27CE6BAB18^B' +'A27CE6C489^B' +'A27CE6CE628^B' +'A27CE6D83A^B' +'A27CE6E2118^B' +'A27CE6EBE9^B' +'A27CE6F5C28^B' +'A27CE6FF9A^B' +'A27CE70972^B' +'A27CE713498^B' +'A27CE71D21^B' +'A27CE726FA8^B' +'A27CE730D2^B' +'A27CE73AA98^B' +'A27CE74481^B' +'A27CE74E5A8^B' +'A27CE75832^B' +'A27CE762098^B' +'A27CE76BE1^B' +'A27CE775BA8^B' +'A27CE77F92^B' +'A27CE789698^B' +'A27CE79341^B' +'A27CE79D1A8^B' +'A27CE7A6F2^B' +'A27CE7B0C98^B' +'A27CE7BAA1^B' +'A27CE7C47A8^B' +'A27CE7CE52^B' +'A27CE7D8298^B' +'A27CE7E201^B' +'A27CE7EBDA8^B' +'A27CE7F5B2^B' +'A27CE7FF8A^B' +'A27CE809618^B' +'A27CE81339^B' +'A27CE819BE1^B' +'A27CE644F98^B' +'1^1' +'31^2' +END_ARRAY 1 395 +TOTAL_ARRAYS 1 + ~NAIF/SPC BEGIN COMMENTS~ +This CK is for testing with the image: /Users/ahibl/astro_efs/test_imgs/uvvis/LUA3107H.161.clem.cub + +This CK was generated using the following command: {} + ~NAIF/SPC END COMMENTS~ diff --git a/tests/pytests/data/LUA3107H.161/clem_uvvis_beta_ik_v04.ti b/tests/pytests/data/LUA3107H.161/clem_uvvis_beta_ik_v04.ti new file mode 100644 index 000000000..23018ba41 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/clem_uvvis_beta_ik_v04.ti @@ -0,0 +1,530 @@ +KPL/IK + +\beginlabel +PDS_VERSION_ID = PDS3 +RECORD_TYPE = STREAM +RECORD_BYTES = "N/A" +^SPICE_KERNEL = "clem_uvvis_009.ti" +MISSION_NAME = "DEEP SPACE PROGRAM SCIENCE EXPERIMENT" +SPACECRAFT_NAME = "CLEMENTINE 1" +DATA_SET_ID = "CLEM1-L-SPICE-6-V1.0" +KERNEL_TYPE_ID = IK +PRODUCT_ID = "clem_uvvis_009.ti" +PRODUCT_CREATION_TIME = 2017-10-01T00:00:00 +PRODUCER_ID = "NAIF/JPL" +MISSION_PHASE_NAME = "N/A" +PRODUCT_VERSION_TYPE = ACTUAL +PLATFORM_OR_MOUNTING_NAME = "CLEMENTINE SPACECRAFT" +START_TIME = "N/A" +STOP_TIME = "N/A" +SPACECRAFT_CLOCK_START_COUNT = "N/A" +SPACECRAFT_CLOCK_STOP_COUNT = "N/A" +TARGET_NAME = MOON +INSTRUMENT_NAME = "ULTRAVIOLET/VISIBLE CAMERA" +NAIF_INSTRUMENT_ID = { + -40002, + -40021, + -40022, + -40023, + -40024, + -40025, + -40026 + } +SOURCE_PRODUCT_ID = "N/A" +NOTE = "See comments in the file for details" +OBJECT = SPICE_KERNEL + INTERCHANGE_FORMAT = ASCII + KERNEL_TYPE = INSTRUMENT + DESCRIPTION = "Clementine SPICE IK file for Ultraviolet +and Visible Imaging Camera (UVVIS) providing FOV definition and other +geometric parameters for the instrument, created by NAIF, JPL and +modified by ASU " +END_OBJECT = SPICE_KERNEL +\endlabel + + +UVVIS Instrument Kernel +======================================================================== + + This Clementine instrument kernel (I-kernel) contains the + instrument geometric parameters for the Ultraviolet and Visible + Imaging Camera (UVVIS). + + +Version and Date +-------------------------------------------------------- + + Version 9.0 -- October 01, 2017 -- Emerson Speyerer, ASU + + - BETA VERSION - + - Still in testing - + + Updated IK to include band specific optical distortion + parameters. + + Added platform IDs + + Removed Fortran code + + Added documentation for loading a kernel into MICE (MATLAB SPICE + utility) + + Version 8.0 -- June 11, 2007 -- Boris Semenov, NAIF + + Updated comments. Added FOV definition. Added PLATFORM_ID. + + Version 7.0 -- Feb 3, 1995 + + +References +-------------------------------------------------------- + + 1. "Models of the Clementine Spacecraft and Remote Sensing + Science Instruments for Geodesy, Cartography, and Dynamical + Sciences", Draft version 1.0, December 1993. + + +Implementation Notes +-------------------------------------------------------- + + This file is used by the SPICE system as follows: programs that + make use of this I-kernel must `load' the kernel, normally during + program initialization. Loading the kernel associates data items + with their names in a data structure called the `kernel pool'. The + SPICE routine FURNSH loads a kernel file into the pool as shown + below. + + CALL FURNSH( 'this_kernel_name' ) in FORTRAN (SPICELIB) + furnsh_c ( "this_kernel_name" ); in C (CSPICE) + cspice_furnsh, "this_kernel_name" in IDL (ICY) + cspice_furnsh( 'this_kernel_name' ); in MATLAB (MICE) + + +Naming Conventions +-------------------------------------------------------- + + All keywords referencing data in this I-kernel are of the form + + INS_ + + The instrument ID is an negative integer value that uniquely + identifies an instrument or specific band. For Clementine Ultraviolet + and Visible Imaging Camera the instrument ID is -40002. In addition, + each band also has its own NAIF ID: + + Table 1: Clementine UVVIS Instrument IDs + ---------------- ----------- ----------------------- + Frame Name NAIF ID Comments + ---------------- ---------- ----------------------- + CLEM_UVVIS -40002 *Deprecated* + CLEM_UVVIS_A -40021 Filter A: 415 nm + CLEM_UVVIS_B -40022 Filter B: 750 nm + CLEM_UVVIS_C -40023 Filter C: 900 nm + CLEM_UVVIS_D -40024 Filter D: 950 nm + CLEM_UVVIS_E -40025 Filter E: 1000 nm + CLEM_UVVIS_F -40026 Filter F: Broadband + + + The upper bound on the length of a name is 32 characters. + +UVVIS Description +--------------------------------------------------------------------------- +-- In progress + +UVVIS Geometric Calibration +--------------------------------------------------------------------------- +-- In progress + +Pixel Coordinate Definition: +--------------------------------------------------------------------------- +-- In progress + +UVVIS First Order Optical Parameters: +--------------------------------------------------------------------------- + + The following section contains the first order optical parameters for + the Clementine UVVIS camera. The values are derived from the sensor + specifications and from models derived from on-orbit observations. + The parameters are wavelength dependent due to chromatic aberrations + in the optical system. + + Optical Parameter Definitions: + + Effective Focal Length: Distance along the optical axis from the + perspective center to the detector (units of mm) + + F/ratio (or f-number): Ratio of the effective focal length to the + dimeter of the entrance pupil (effective aperture) + + Spectral Band: Wavelength range (or spectral response) of the + optics + + Boresight Line and Sample (principal point): Point at which the + optical axis intersects the detector array + + IFOV (Instantaneous field of view): Angle subtended by a single + detector element on the axis of the optical system + + Table 2: Original UVVIS Optical Parameters + ------------------------------- ----------- + Parameter, Unit Value + ------------------------------- ----------- + Focal Length (USGS), mm 90.15 + Focal Length (NAIF), mm 90.00 + Pixel Pitch, mm 0.023 + Boresight Sample, pixel 192.5 + Boresight Line, pixel 144.5 + Max Samples, pixels 342 + Max Lines, pixels 288 + Distortion (Alpha), 1/mm**2 0 + + Table 3: UVVIS Focal Length + -------- ------------ ------------------------------ + Filter Wavelength Effective Focal Length, mm + -------- ------------ ------------------------------ + A 415 nm + B 750 nm + C 900 nm + D 950 nm + E 1000 nm + F Broadband + + Deprecated Values from the USGS IAK + + + + INS-40002_FOCAL_LENGTH = ( 90.15 ) -- Not used + + \begindata + + INS-40002_PIXEL_PITCH = ( 0.023 ) + INS-40002_BORESIGHT_SAMPLE = ( 192.5 ) + INS-40002_BORESIGHT_LINE = ( 144.5 ) + INS-40002_TRANSX = (0.0 0.023 0.0) + INS-40002_TRANSY = (0.0 0.0 0.023) + INS-40002_ITRANSS = (0.0 43.47826087 0.0) + INS-40002_ITRANSL = (0.0 0.0 43.47826087) + + \begintext + + Additional values from the original NAIF IK + + \begindata + + INS-40002_FOCAL_LENGTH = ( 90.00 ) + INS-40002_K = ( 43.4783 ) + INS-40002_S0 = ( 192.5 ) + INS-40002_L0 = ( 144.5 ) + INS-40002_S_MAX = ( 384 ) + INS-40002_L_MAX = ( 288 ) + INS-40002_ALPHA0 = ( 0.0 ) + + \begintext + + Band Spacific Parameters + + \begindata + INS-40021_FOCAL_LENGTH = 89.874444 + INS-40021_F/RATIO = -999.9999 + INS-40021_BORESIGHT_SAMPLE = 192.5 + INS-40021_BORESIGHT_LINE = 144.5 + INS-40021_IFOV = -999.999 + INS-40021_PIXEL_SAMPLES = 384 + INS-40021_PIXEL_LINES = 288 + INS-40021_PIXEL_PITCH = 0.023 + INS-40021_PIXEL_SIZE = ( 0.023 0.023 ) + INS-40021_CCD_CENTER = ( 512.5 512.5 ) + INS-40021_FILTER_NAME = 'A' + INS-40021_FILTER_BANDCENTER = 415 + INS-40021_FILTER_BANDWIDTH = 40 + INS-40021_FOV_FRAME = 'CLEM_UVVIS_A' + INS-40021_FOV_SHAPE = 'RECTANGLE' + INS-40021_BORESIGHT = ( 0.0 0.0 1.0 ) + INS-40021_FOV_CLASS_SPEC = 'ANGLES' + INS-40021_FOV_REF_VECTOR = ( 1.0 0.0 0.0 ) + INS-40021_FOV_REF_ANGLE = ( 2.8115 ) + INS-40021_FOV_CROSS_ANGLE = ( 2.1085 ) + INS-40021_FOV_ANGLE_UNITS = 'DEGREES' + INS-40021_TRANSX = (0.0 0.023 0.0) + INS-40021_TRANSY = (0.0 0.0 0.023) + INS-40021_ITRANSS = (0.0 43.47826087 0.0) + INS-40021_ITRANSL = (0.0 0.0 43.47826087) + + INS-40022_FOCAL_LENGTH = 89.979236 + INS-40022_F/RATIO = -999.9999 + INS-40022_BORESIGHT_SAMPLE = 192.5 + INS-40022_BORESIGHT_LINE = 144.5 + INS-40022_IFOV = -999.999 + INS-40022_PIXEL_SAMPLES = 384 + INS-40022_PIXEL_LINES = 288 + INS-40022_PIXEL_PITCH = 0.023 + INS-40022_PIXEL_SIZE = ( 0.023 0.023 ) + INS-40022_CCD_CENTER = ( 512.5 512.5 ) + INS-40022_FILTER_NAME = 'B' + INS-40022_FILTER_BANDCENTER = 750 + INS-40022_FILTER_BANDWIDTH = 10 + INS-40022_FOV_FRAME = 'CLEM_UVVIS_B' + INS-40022_FOV_SHAPE = 'RECTANGLE' + INS-40022_BORESIGHT = ( 0.0 0.0 1.0 ) + INS-40022_FOV_CLASS_SPEC = 'ANGLES' + INS-40022_FOV_REF_VECTOR = ( 1.0 0.0 0.0 ) + INS-40022_FOV_REF_ANGLE = ( 2.8115 ) + INS-40022_FOV_CROSS_ANGLE = ( 2.1085 ) + INS-40022_FOV_ANGLE_UNITS = 'DEGREES' + INS-40022_TRANSX = (0.0 0.023 0.0) + INS-40022_TRANSY = (0.0 0.0 0.023) + INS-40022_ITRANSS = (0.0 43.47826087 0.0) + INS-40022_ITRANSL = (0.0 0.0 43.47826087) + + INS-40023_FOCAL_LENGTH = 89.987163 + INS-40023_F/RATIO = -999.9999 + INS-40023_BORESIGHT_SAMPLE = 192.5 + INS-40023_BORESIGHT_LINE = 144.5 + INS-40023_IFOV = -999.999 + INS-40023_PIXEL_SAMPLES = 384 + INS-40023_PIXEL_LINES = 288 + INS-40023_PIXEL_PITCH = 0.023 + INS-40023_PIXEL_SIZE = ( 0.023 0.023 ) + INS-40023_CCD_CENTER = ( 512.5 512.5 ) + INS-40023_FILTER_NAME = 'C' + INS-40023_FILTER_BANDCENTER = 900 + INS-40023_FILTER_BANDWIDTH = 20 + INS-40023_FOV_FRAME = 'CLEM_UVVIS_C' + INS-40023_FOV_SHAPE = 'RECTANGLE' + INS-40023_BORESIGHT = ( 0.0 0.0 1.0 ) + INS-40023_FOV_CLASS_SPEC = 'ANGLES' + INS-40023_FOV_REF_VECTOR = ( 1.0 0.0 0.0 ) + INS-40023_FOV_REF_ANGLE = ( 2.8115 ) + INS-40023_FOV_CROSS_ANGLE = ( 2.1085 ) + INS-40023_FOV_ANGLE_UNITS = 'DEGREES' + INS-40023_TRANSX = (0.0 0.023 0.0) + INS-40023_TRANSY = (0.0 0.0 0.023) + INS-40023_ITRANSS = (0.0 43.47826087 0.0) + INS-40023_ITRANSL = (0.0 0.0 43.47826087) + + INS-40024_FOCAL_LENGTH = 89.991267 + INS-40024_F/RATIO = -999.9999 + INS-40024_BORESIGHT_SAMPLE = 192.5 + INS-40024_BORESIGHT_LINE = 144.5 + INS-40024_IFOV = -999.999 + INS-40024_PIXEL_SAMPLES = 384 + INS-40024_PIXEL_LINES = 288 + INS-40024_PIXEL_PITCH = 0.023 + INS-40024_PIXEL_SIZE = ( 0.023 0.023 ) + INS-40024_CCD_CENTER = ( 512.5 512.5 ) + INS-40024_FILTER_NAME = 'D' + INS-40024_FILTER_BANDCENTER = 950 + INS-40024_FILTER_BANDWIDTH = 30 + INS-40024_FOV_FRAME = 'CLEM_UVVIS_D' + INS-40024_FOV_SHAPE = 'RECTANGLE' + INS-40024_BORESIGHT = ( 0.0 0.0 1.0 ) + INS-40024_FOV_CLASS_SPEC = 'ANGLES' + INS-40024_FOV_REF_VECTOR = ( 1.0 0.0 0.0 ) + INS-40024_FOV_REF_ANGLE = ( 2.8115 ) + INS-40024_FOV_CROSS_ANGLE = ( 2.1085 ) + INS-40024_FOV_ANGLE_UNITS = 'DEGREES' + INS-40024_TRANSX = (0.0 0.023 0.0) + INS-40024_TRANSY = (0.0 0.0 0.023) + INS-40024_ITRANSS = (0.0 43.47826087 0.0) + INS-40024_ITRANSL = (0.0 0.0 43.47826087) + + INS-40025_FOCAL_LENGTH = 89.994013 + INS-40025_F/RATIO = -999.9999 + INS-40025_BORESIGHT_SAMPLE = 192.5 + INS-40025_BORESIGHT_LINE = 144.5 + INS-40025_IFOV = -999.999 + INS-40025_PIXEL_SAMPLES = 384 + INS-40025_PIXEL_LINES = 288 + INS-40025_PIXEL_PITCH = 0.023 + INS-40025_PIXEL_SIZE = ( 0.023 0.023 ) + INS-40025_CCD_CENTER = ( 512.5 512.5 ) + INS-40025_FILTER_NAME = 'E' + INS-40025_FILTER_BANDCENTER = 1000 + INS-40025_FILTER_BANDWIDTH = 30 + INS-40025_FOV_FRAME = 'CLEM_UVVIS_E' + INS-40025_FOV_SHAPE = 'RECTANGLE' + INS-40025_BORESIGHT = ( 0.0 0.0 1.0 ) + INS-40025_FOV_CLASS_SPEC = 'ANGLES' + INS-40025_FOV_REF_VECTOR = ( 1.0 0.0 0.0 ) + INS-40025_FOV_REF_ANGLE = ( 2.8115 ) + INS-40025_FOV_CROSS_ANGLE = ( 2.1085 ) + INS-40025_FOV_ANGLE_UNITS = 'DEGREES' + INS-40025_TRANSX = (0.0 0.023 0.0) + INS-40025_TRANSY = (0.0 0.0 0.023) + INS-40025_ITRANSS = (0.0 43.47826087 0.0) + INS-40025_ITRANSL = (0.0 0.0 43.47826087) + + INS-40026_FOCAL_LENGTH = 90.00 + INS-40026_F/RATIO = -999.9999 + INS-40026_BORESIGHT_SAMPLE = 192.5 + INS-40026_BORESIGHT_LINE = 144.5 + INS-40026_IFOV = -999.999 + INS-40026_PIXEL_SAMPLES = 384 + INS-40026_PIXEL_LINES = 288 + INS-40026_PIXEL_PITCH = 0.023 + INS-40026_PIXEL_SIZE = ( 0.023 0.023 ) + INS-40026_CCD_CENTER = ( 512.5 512.5 ) + INS-40026_FILTER_NAME = 'F' + INS-40026_FILTER_BANDCENTER = 650 + INS-40026_FILTER_BANDWIDTH = 550 + INS-40026_FOV_FRAME = 'CLEM_UVVIS_F' + INS-40026_FOV_SHAPE = 'RECTANGLE' + INS-40026_BORESIGHT = ( 0.0 0.0 1.0 ) + INS-40026_FOV_CLASS_SPEC = 'ANGLES' + INS-40026_FOV_REF_VECTOR = ( 1.0 0.0 0.0 ) + INS-40026_FOV_REF_ANGLE = ( 2.8115 ) + INS-40026_FOV_CROSS_ANGLE = ( 2.1085 ) + INS-40026_FOV_ANGLE_UNITS = 'DEGREES' + INS-40026_TRANSX = (0.0 0.023 0.0) + INS-40026_TRANSY = (0.0 0.0 0.023) + INS-40026_ITRANSS = (0.0 43.47826087 0.0) + INS-40026_ITRANSL = (0.0 0.0 43.47826087) + + \begintext + + +UVVIS Camera Model +--------------------------------------------------------------------------- + + (xd, yd) = distorted image point + (xu, yu) = undistorted image point + (xp, yp) = distortion center (principal point) + k1= 1st radial distortion coefficient + k2= 2nd radial distortion coefficient + k3= 3rd radial distortion coefficient + p1= 1st tangential distortion coefficient + p2= 2nd tangential distortion coefficient + + Step 1: remove principal point offset (xp,yp) + x = xd - xp; + y = yd - yp; + + Step 2: Calculate r - distance between the principal point and the + measured point on the image + rr = x * x + y * y + + Step 3: Calculate dr - radial distortion contribution + dr = k1 + k2 * rr + k3 * rr * rr; + + Step 4: Calculate tx and ty - decentering distortion contribution + tx = p1 * (rr + 2.0 * x * x) + 2.0 * p2 * x * y; + ty = 2.0 * p1 * x * y + p2 * (rr + 2 * y * y); + + Step 5: Calculate xu, yu + xu = xd + x * dr + tx; + yu = yd + y * dr + ty; + + UVVIS coefficients: + + PP = (xp yp) + OD_K = (k1 k2 k3) + DECENTER = (p1 p2) + + \begindata + INS-40021_PP = ( 0 0 ) + INS-40022_PP = ( 0 0 ) + INS-40023_PP = ( 0 0 ) + INS-40024_PP = ( 0 0 ) + INS-40025_PP = ( 0 0 ) + INS-40026_PP = ( 0 0 ) + + INS-40021_OD_K = ( 0 -2.422842e-05 0 ) + INS-40022_OD_K = ( 0 -3.820233e-05 0 ) + INS-40023_OD_K = ( 0 -3.767127e-05 0 ) + INS-40024_OD_K = ( 0 -2.398624e-05 0 ) + INS-40025_OD_K = ( 0 -2.248022e-05 0 ) + INS-40026_OD_K = ( 0 0 0 ) + + INS-40021_DECENTER = ( +2.255006e-05 +2.108941e-05 ) + INS-40022_DECENTER = ( +3.203789e-07 +3.706078e-07 ) + INS-40023_DECENTER = ( +4.978645e-06 -3.698737e-05 ) + INS-40024_DECENTER = ( +1.414502e-05 -1.372645e-04 ) + INS-40025_DECENTER = ( +2.922347e-05 -4.655129e-05 ) + INS-40026_DECENTER = ( 0 0 ) + \begintext + + + + +Instrument Frame - Line/Sample Coordinates Diagram +-------------------------------------------------------- + + This diagram illustrates the relationship of the instrument frame + axes and the sample/line coordinates: + + + sample sample + 1 S max + +-------------------------+-------------+ + Line 1 | | + | | + | | + | | + | | + | +Z | + | (into the page) | +X + | x--------------------------> + | |(L_0,S_0) | + | | | + | | | + | | * + L + | | (L,S) | + | | | + | | | + Line max +-------------------|-------------------+ + | + | + | + V +Y + + Assuming no optical distortion the view direction in the + instrument frame (X,Y,Z) for a given pixel specified by its + line/sample coordinates (L,S) is computed as follows: + + X = (S - S_0) / K + Y = (L - L_0) / K + Z = FOCAL_LENGTH + + +FOV Definition +-------------------------------------------------------- + + The FOV of Ultraviolet and Visible Imaging Camera is defined below + in the ``CLEM_UVVIS'' reference frame as a 5.623 deg by 4.217 deg + rectangle with the boresight along +Z axis. (The angular extents + were computed using the values from the section ``Camera Optics'' + above.) + + \begindata + + INS-40002_FOV_FRAME = 'CLEM_UVVIS' + INS-40002_FOV_SHAPE = 'RECTANGLE' + INS-40002_BORESIGHT = ( 0.0 0.0 1.0 ) + INS-40002_FOV_CLASS_SPEC = 'ANGLES' + INS-40002_FOV_REF_VECTOR = ( 1.0 0.0 0.0 ) + INS-40002_FOV_REF_ANGLE = ( 2.8115 ) + INS-40002_FOV_CROSS_ANGLE = ( 2.1085 ) + INS-40002_FOV_ANGLE_UNITS = 'DEGREES' + + \begintext + + +Platform ID +-------------------------------------------------------- + + This number is the NAIF instrument ID of the platform on which the + instrument is mounted -- the spacecraft bus. + + \begindata + + INS-40002_PLATFORM_ID = ( -40000 ) + INS-40021_PLATFORM_ID = ( -40002 ) + INS-40022_PLATFORM_ID = ( -40002 ) + INS-40023_PLATFORM_ID = ( -40002 ) + INS-40024_PLATFORM_ID = ( -40002 ) + INS-40025_PLATFORM_ID = ( -40002 ) + INS-40026_PLATFORM_ID = ( -40002 ) + + \begintext + + diff --git a/tests/pytests/data/LUA3107H.161/clem_v12.tf b/tests/pytests/data/LUA3107H.161/clem_v12.tf new file mode 100644 index 000000000..1b8aa6483 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/clem_v12.tf @@ -0,0 +1,662 @@ +KPL/FK + +\beginlabel +PDS_VERSION_ID = PDS3 +RECORD_TYPE = STREAM +RECORD_BYTES = "N/A" +^SPICE_KERNEL = "clem_v21.tf" +MISSION_NAME = "DEEP SPACE PROGRAM SCIENCE EXPERIMENT" +SPACECRAFT_NAME = "CLEMENTINE 1" +DATA_SET_ID = "CLEM1-L-SPICE-6-V1.0" +KERNEL_TYPE_ID = FK +PRODUCT_ID = "clem_v21.tf" +PRODUCT_CREATION_TIME = 2017-10-01T00:00:00 +PRODUCER_ID = "NAIF/JPL" +MISSION_PHASE_NAME = "N/A" +PRODUCT_VERSION_TYPE = ACTUAL +PLATFORM_OR_MOUNTING_NAME = "N/A" +START_TIME = "N/A" +STOP_TIME = "N/A" +SPACECRAFT_CLOCK_START_COUNT = "N/A" +SPACECRAFT_CLOCK_STOP_COUNT = "N/A" +TARGET_NAME = MOON +INSTRUMENT_NAME = "N/A" +NAIF_INSTRUMENT_ID = "N/A" +SOURCE_PRODUCT_ID = "N/A" +NOTE = "See comments in the file for details" +OBJECT = SPICE_KERNEL + INTERCHANGE_FORMAT = ASCII + KERNEL_TYPE = FRAMES + DESCRIPTION = "Clementine SPICE FK file providing the +complete set of frame definitions for the Clementine spacecraft and its +science instruments, including band specific frames for the UVVIS +camera. Created by NAIF with additions by ASU." +END_OBJECT = SPICE_KERNEL +\endlabel + + +Clementine Frame Definitions Kernel +============================================================================== + + This frame kernel (FK) contains the Clementine spacecraft and + science instrument frame definitions. It also contains name - + to - NAIF ID mappings for the Clementine science instruments (see + the last section of the file.) + + Additional frames for each UVVIS camera filter have been added to + handle band specific optical distortion parameters. + + +Version and Date +-------------------------------------------------------- + + Version 2.1 -- October 01, 2017 -- Emerson Speyerer, ASU + + Added descriptions and new frames for each UVVIS filter. + + Version 2.0 -- June 11, 2007 -- Boris Semenov + + Added descriptions. Added name-ID mapping keywords. + + Version 1.0 -- September 29, 2000 -- Boris Semenov + + Initial Release. Contains Euler angles from Clementine I-Kernel + files. Does not contain a description for any of the frames. + + +References +-------------------------------------------------------- + + 1. C-kernel Required Reading + + 2. Kernel Pool Required Reading + + 3. Frames Required Reading + + 4. High-Resolution Imager (HIRES) I-Kernel File "clem_hires_008.ti" + + 5. Ultraviolet and Visible Imaging Camera (UVVIS) I-Kernel File + "clem_uvvis_008.ti" + + 6. Near Infrared Mapping Spectrometer (NIR) I-Kernel File + "clem_nir_009.ti" + + 7. Long Wavelength Infrared Mapping Spectrometer (LWIR) I-Kernel + File "clem_lwir_008.ti" + + 8. Laser Ranger (LIDAR) I-Kernel File "clem_lidar_005.ti" + + 9. Star Tracker A (ASTAR) I-Kernel File "clem_astar_006.ti" + + 10. Star Tracker B (BSTAR) I-Kernel File "clem_bstar_006.ti" + + 11. Charged Particle Telescope (CPT) I-Kernel File "clem_cpt_002.ti" + + 12. "Post Launch Alignment and Geometric Calibration of the + Clementine Spacecraft and Remote Sensing Science Instruments", + T. Duxbury, Rough Draft, no date + + 13. "Models of the Clementine Spacecraft and Remote Sensing Science + Instruments for Geodesy, Cartography, and Dynamical Sciences", + Draft version 1.0, December 1993. + + +Contact Information +-------------------------------------------------------- + + Boris V. Semenov, NAIF/JPL, (818)-354-8136, Boris.Semenov@jpl.nasa.gov + + +Implementation Notes +-------------------------------------------------------- + + This file is used by the SPICE system as follows: programs that make + use of this frame kernel must ``load'' the kernel, normally during + program initialization (see [2]). The SPICELIB routine FURNSH + (furnsh_c in CSPICE, cspice_furnsh in ICY) loads a kernel file into + the pool as follows: + + CALL FURNSH ( 'frame_kernel_name' ) + furnsh_c ( "frame_kernel_name" ); + cspice_furnsh, "frame_kernel_name" + + This file was created and may be updated with a text editor or word + processor. Should you need to update this kernel in any way, + please, modify the "Version and Date" section above to reflect the + changes. + + +Clementine Frames +-------------------------------------------------------- + + The following Clementine frames are defined in this kernel file: + + Frame Name Relative to Type NAIF ID + ===================== ================== ======= ======= + + Spacecraft Bus Frame: + --------------------- + CLEM_SC_BUS rel.to J2000 CK -40000 + + Instrument Frames: + ------------------ + CLEM_HIRES rel.to SC_BUS FIXED -40001 + CLEM_UVVIS rel.to SC_BUS FIXED -40002 + CLEM_NIR rel.to SC_BUS FIXED -40003 + CLEM_LWIR rel.to SC_BUS FIXED -40004 + CLEM_LIDAR rel.to SC_BUS FIXED -40005 + CLEM_ASTAR rel.to SC_BUS FIXED -40006 + CLEM_BSTAR rel.to SC_BUS FIXED -40007 + CLEM_CPT rel.to SC_BUS FIXED -40008 + + UVVIS Specific Frames: + ---------------------- + CLEM_UVVIS_A rel.to CLEM_UVVIS FIXED -40021 + CLEM_UVVIS_B rel.to CLEM_UVVIS FIXED -40022 + CLEM_UVVIS_C rel.to CLEM_UVVIS FIXED -40023 + CLEM_UVVIS_D rel.to CLEM_UVVIS FIXED -40024 + CLEM_UVVIS_E rel.to CLEM_UVVIS FIXED -40025 + CLEM_UVVIS_F rel.to CLEM_UVVIS FIXED -40026 + + +Clementine Frames Hierarchy +-------------------------------------------------------- + + The diagram below shows Clementine frames hierarchy: + + + "J2000" INERTIAL + +--------------------------------------------+ + | | + | <--ck | <--pck + | | + | V + | "IAU_EARTH" + | EARTH BFR(*) + | ------------ + | + | + | "CLEM_ASTAR" "CLEM_BSTAR" + | ------------ ------------ + | ^ ^ + | | | + V |<--fixed |<--fixed + "CLEM_SC_BUS" | | + +----------------------------------------------------------+ + | | | | | | + |<--fixed |<--fixed |<-fixed |<--fixed |<--fixed |<--fixed + | | | | | | + V V V V V V + "CLEM_HIRES" "CLEM_UVVIS" "CLEM_NIR" "CLEM_LWIR" "CLEM_LIDAR" "CLEM_CPT" + ------------ ------------ ---------- ----------- ------------ ---------- + | + |---> CLEM_UVVIS_A (fixed) + | + |---> CLEM_UVVIS_B (fixed) + | + |---> CLEM_UVVIS_C (fixed) + | + |---> CLEM_UVVIS_D (fixed) + | + |---> CLEM_UVVIS_E (fixed) + | + |---> CLEM_UVVIS_F (fixed) + + +Spacecraft Bus Frame +-------------------------------------------------------- + + The Clementine spacecraft bus frame is defined by the spacecraft + design as follows ([12]): + + * +Z axis is in the direction of the nominal remote sensing + science instrument boresight vectors; + + * +X axis is in the direction of the main rocket engine; + + * +Y axis completes the right handed frame and is in the plane + of the solar arrays; + + * the origin of this frame is at the geometric center of the + spacecraft's octagonal prizm shaped body. + + This diagram illustrates the spacecraft frame: + + ________________ + `. .' + _______ _______ ------------------- _______ _______ + | | | | | | | | | | + | | | | | Science | | | | | + | | | | | Deck | | | | | + | | | | | | | | | | + | | | |+Ysc| +Zsc| | | | | + | | |=| <------o | |=| | | + | | | | | | | | | | | + | | | | | | | | | | | + | | | | | | | | | | | + | | | | | V | | | | | + | | | | | +Xsc| | | | | + ------- ------- ------------------- ------- ------- + |_| + / \ + . . + ._____. + + The spacecraft bus attitude with respect to an inertial frame is + provided by CK kernels. Therefore the spacecraft frame is defined as + a CK-based frame. + + \begindata + + FRAME_CLEM_SC_BUS = -40000 + FRAME_-40000_NAME = 'CLEM_SC_BUS' + FRAME_-40000_CLASS = 3 + FRAME_-40000_CLASS_ID = -40000 + FRAME_-40000_CENTER = -40 + CK_-40000_SCLK = -40 + CK_-40000_SPK = -40 + + \begintext + + +Science Instrument Frames +-------------------------------------------------------- + + All Clementine instrument frames are defined in the same way as + follows ([12,13]): + + * +Z axis is along the instrument boresight vector; + + * +X axis is in the image plane and in the direction of + increasing pixels; + + * +Y axis is in the image plane and in the direction of + increasing lines; + + Since all insruments are rigidly mounted on the spacecraft, the + orientation of their frames is constant with respect to the + spacecraft frame. Therefore, all instrument frames are defined as + fixed offset frames with respect to the spacecraft frame. + + Originally mounting alignment of the instruments was included in + the IK files by providing the orientation of the instrument frame + relative to the spacecraft frame as three angles: thetaX, thetaY, + and thetaZ. The spacecraft-to-instrument frame transformation, + TXYZxyz, could derived from these angles as follows: + + TXYZxyz = R (thetaZ) R (thetaY) R (thetaX) + Z Y X + + where R (theta) represents a 3x3 rotation matrix of angle theta + i + about the i axis. + + The instrument frame definitions below incorporate the rotation + angles from the latest versions of the IKs available at the time + when this FK was created. + + +High-Resolution Imager (HIRES) Frame + + The rotation angles provided in the HIRES frame definition below are + from [4]. + + \begindata + + FRAME_CLEM_HIRES = -40001 + FRAME_-40001_NAME = 'CLEM_HIRES' + FRAME_-40001_CLASS = 4 + FRAME_-40001_CLASS_ID = -40001 + FRAME_-40001_CENTER = -40 + TKFRAME_-40001_SPEC = 'ANGLES' + TKFRAME_-40001_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40001_ANGLES = ( -0.00504400153826, + -0.00125663706144, + -3.14333798284179 ) + TKFRAME_-40001_AXES = ( 1, 2, 3 ) + TKFRAME_-40001_UNITS = 'RADIANS' + + \begintext + + +Ultraviolet and Visible Imaging Camera (UVVIS) Frame + + The rotation angles provided in the UVVIS frame definition below are + from [5]. Band specific frames are included to handle the different + optical distortion parameters + + \begindata + + FRAME_CLEM_UVVIS = -40002 + FRAME_-40002_NAME = 'CLEM_UVVIS' + FRAME_-40002_CLASS = 4 + FRAME_-40002_CLASS_ID = -40002 + FRAME_-40002_CENTER = -40 + TKFRAME_-40002_SPEC = 'ANGLES' + TKFRAME_-40002_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40002_ANGLES = ( 0.0, 0.0, 0.0 ) + TKFRAME_-40002_AXES = ( 1, 2, 3 ) + TKFRAME_-40002_UNITS = 'RADIANS' + + FRAME_CLEM_UVVIS_A = -40021 + FRAME_-40021_NAME = 'CLEM_UVVIS_A' + FRAME_-40021_CLASS = 4 + FRAME_-40021_CLASS_ID = -40021 + FRAME_-40021_CENTER = -40 + TKFRAME_-40021_SPEC = 'ANGLES' + TKFRAME_-40021_RELATIVE = 'CLEM_UVVIS' + TKFRAME_-40021_ANGLES = ( -0.00553269372882, -0.00104719755120, 1.57690497917688 ) + TKFRAME_-40021_AXES = ( 1, 2, 3 ) + TKFRAME_-40021_UNITS = 'RADIANS' + + FRAME_CLEM_UVVIS_B = -40022 + FRAME_-40022_NAME = 'CLEM_UVVIS_B' + FRAME_-40022_CLASS = 4 + FRAME_-40022_CLASS_ID = -40022 + FRAME_-40022_CENTER = -40 + TKFRAME_-40022_SPEC = 'ANGLES' + TKFRAME_-40022_RELATIVE = 'CLEM_UVVIS' + TKFRAME_-40022_ANGLES = ( -0.00553269372882, -0.00104719755120, 1.57690497917688 ) + TKFRAME_-40022_AXES = ( 1, 2, 3 ) + TKFRAME_-40022_UNITS = 'RADIANS' + + FRAME_CLEM_UVVIS_C = -40023 + FRAME_-40023_NAME = 'CLEM_UVVIS_C' + FRAME_-40023_CLASS = 4 + FRAME_-40023_CLASS_ID = -40023 + FRAME_-40023_CENTER = -40 + TKFRAME_-40023_SPEC = 'ANGLES' + TKFRAME_-40023_RELATIVE = 'CLEM_UVVIS' + TKFRAME_-40023_ANGLES = ( -0.00553269372882, -0.00104719755120, 1.57690497917688 ) + TKFRAME_-40023_AXES = ( 1, 2, 3 ) + TKFRAME_-40023_UNITS = 'RADIANS' + + FRAME_CLEM_UVVIS_D = -40024 + FRAME_-40024_NAME = 'CLEM_UVVIS_D' + FRAME_-40024_CLASS = 4 + FRAME_-40024_CLASS_ID = -40024 + FRAME_-40024_CENTER = -40 + TKFRAME_-40024_SPEC = 'ANGLES' + TKFRAME_-40024_RELATIVE = 'CLEM_UVVIS' + TKFRAME_-40024_ANGLES = ( -0.00553269372882, -0.00104719755120, 1.57690497917688 ) + TKFRAME_-40024_AXES = ( 1, 2, 3 ) + TKFRAME_-40024_UNITS = 'RADIANS' + + FRAME_CLEM_UVVIS_E = -40025 + FRAME_-40025_NAME = 'CLEM_UVVIS_E' + FRAME_-40025_CLASS = 4 + FRAME_-40025_CLASS_ID = -40025 + FRAME_-40025_CENTER = -40 + TKFRAME_-40025_SPEC = 'ANGLES' + TKFRAME_-40025_RELATIVE = 'CLEM_UVVIS' + TKFRAME_-40025_ANGLES = ( -0.00553269372882, -0.00104719755120, 1.57690497917688 ) + TKFRAME_-40025_AXES = ( 1, 2, 3 ) + TKFRAME_-40025_UNITS = 'RADIANS' + + FRAME_CLEM_UVVIS_F = -40026 + FRAME_-40026_NAME = 'CLEM_UVVIS_F' + FRAME_-40026_CLASS = 4 + FRAME_-40026_CLASS_ID = -40026 + FRAME_-40026_CENTER = -40 + TKFRAME_-40026_SPEC = 'ANGLES' + TKFRAME_-40026_RELATIVE = 'CLEM_UVVIS' + TKFRAME_-40026_ANGLES = ( -0.00553269372882, -0.00104719755120, 1.57690497917688 ) + TKFRAME_-40026_AXES = ( 1, 2, 3 ) + TKFRAME_-40026_UNITS = 'RADIANS' + + + \begintext + + +Near Infrared Mapping Spectrometer (NIR) Frame + + The rotation angles provided in the frame NIT definition below are + from [6]. + + \begindata + + FRAME_CLEM_NIR = -40003 + FRAME_-40003_NAME = 'CLEM_NIR' + FRAME_-40003_CLASS = 4 + FRAME_-40003_CLASS_ID = -40003 + FRAME_-40003_CENTER = -40 + TKFRAME_-40003_SPEC = 'ANGLES' + TKFRAME_-40003_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40003_ANGLES = ( -0.005525711614, + -0.001685987814, + -0.023816759530 ) + TKFRAME_-40003_AXES = ( 1, 2, 3 ) + TKFRAME_-40003_UNITS = 'RADIANS' + + \begintext + + +Long Wavelength Infrared Mapping Spectrometer (LWIR) Frame + + The rotation angles provided in the frame LWIR definition below are + from [7]. + + \begindata + + FRAME_CLEM_LWIR = -40004 + FRAME_-40004_NAME = 'CLEM_LWIR' + FRAME_-40004_CLASS = 4 + FRAME_-40004_CLASS_ID = -40004 + FRAME_-40004_CENTER = -40 + TKFRAME_-40004_SPEC = 'ANGLES' + TKFRAME_-40004_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40004_ANGLES = ( -0.00053581608036, + -0.00019722220548, + -3.14159265358979 ) + TKFRAME_-40004_AXES = ( 1, 2, 3 ) + TKFRAME_-40004_UNITS = 'RADIANS' + + \begintext + + +Laser Ranger (LIDAR) Frame + + The rotation angles provided in the frame LIDAR definition below are + from [8]. + + \begindata + + FRAME_CLEM_LIDAR = -40005 + FRAME_-40005_NAME = 'CLEM_LIDAR' + FRAME_-40005_CLASS = 4 + FRAME_-40005_CLASS_ID = -40005 + FRAME_-40005_CENTER = -40 + TKFRAME_-40005_SPEC = 'ANGLES' + TKFRAME_-40005_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40005_ANGLES = ( -0.00504400153826, + -0.00125663706144, + 0.0 ) + TKFRAME_-40005_AXES = ( 1, 2, 3 ) + TKFRAME_-40005_UNITS = 'RADIANS' + + \begintext + + +Star Tracker A (ASTAR) Frame + + The rotation angles provided in the ASTAR frame definition below are + from [9]. + + \begindata + + FRAME_CLEM_ASTAR = -40006 + FRAME_-40006_NAME = 'CLEM_ASTAR' + FRAME_-40006_CLASS = 4 + FRAME_-40006_CLASS_ID = -40006 + FRAME_-40006_CENTER = -40 + TKFRAME_-40006_SPEC = 'ANGLES' + TKFRAME_-40006_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40006_ANGLES = ( 2.04022706372830, + -0.52166146012859, + -3.06113297507285 ) + TKFRAME_-40006_AXES = ( 1, 2, 3 ) + TKFRAME_-40006_UNITS = 'RADIANS' + + \begintext + + +Star Tracker B (BSTAR) Frame + + The rotation angles provided in the frame BSTAR definition below are + from [10]. + + \begindata + + FRAME_CLEM_BSTAR = -40007 + FRAME_-40007_NAME = 'CLEM_BSTAR' + FRAME_-40007_CLASS = 4 + FRAME_-40007_CLASS_ID = -40007 + FRAME_-40007_CENTER = -40 + TKFRAME_-40007_SPEC = 'ANGLES' + TKFRAME_-40007_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40007_ANGLES = ( -2.05078106971511, + -0.51341128875441, + -0.08063421144214 ) + TKFRAME_-40007_AXES = ( 1, 2, 3 ) + TKFRAME_-40007_UNITS = 'RADIANS' + + \begintext + + +Charged Particle Telescope (CPT) Frame + + + The rotation angles provided in the frame definition below are + from [11]. + + \begindata + + FRAME_CLEM_CPT = -40008 + FRAME_-40008_NAME = 'CLEM_CPT' + FRAME_-40008_CLASS = 4 + FRAME_-40008_CLASS_ID = -40008 + FRAME_-40008_CENTER = -40 + TKFRAME_-40008_SPEC = 'ANGLES' + TKFRAME_-40008_RELATIVE = 'CLEM_SC_BUS' + TKFRAME_-40008_ANGLES = ( 0.0, + -3.141592654, + 0.0 ) + TKFRAME_-40008_AXES = ( 1, 2, 3 ) + TKFRAME_-40008_UNITS = 'RADIANS' + + \begintext + + +Clementine NAIF ID Codes Definitions +-------------------------------------------------------- + + This section contains name - to - NAIF ID mappings for the Clementine + mission. Once the contents of this file is loaded into the KERNEL + POOL, these mappings become available within SPICE, making it + possible to use these names in the high level SPICE routine calls. + + Spacecraft: + ----------- + + DSPSE -40 + CLEM -40 + CLEMENTINE_1 -40 + CLEMENTINE -40 + + CLEM_SPACECRAFT -40000 + CLEM_SPACECRAFT_BUS -40000 + CLEM_SC_BUS -40000 + + Science Instruments: + -------------------- + + CLEM_HIRES -40001 + CLEM_UVVIS -40002 + CLEM_NIR -40003 + CLEM_LWIR -40004 + CLEM_LIDAR -40005 + CLEM_ASTAR -40006 + CLEM_BSTAR -40007 + CLEM_CPT -40008 + + UVVIS Specific Frames: + ---------------------- + + CLEM_UVVIS_A -40021 + CLEM_UVVIS_B -40022 + CLEM_UVVIS_C -40023 + CLEM_UVVIS_D -40024 + CLEM_UVVIS_E -40025 + CLEM_UVVIS_F -40026 + + + The mappings summarized in this table are implemented by the keywords + below. + + \begindata + + NAIF_BODY_NAME += ( 'DSPSE' ) + NAIF_BODY_CODE += ( -40 ) + + NAIF_BODY_NAME += ( 'CLEM' ) + NAIF_BODY_CODE += ( -40 ) + + NAIF_BODY_NAME += ( 'CLEMENTINE_1' ) + NAIF_BODY_CODE += ( -40 ) + + NAIF_BODY_NAME += ( 'CLEMENTINE' ) + NAIF_BODY_CODE += ( -40 ) + + NAIF_BODY_NAME += ( 'CLEM_SPACECRAFT' ) + NAIF_BODY_CODE += ( -40000 ) + + NAIF_BODY_NAME += ( 'CLEM_SPACECRAFT_BUS' ) + NAIF_BODY_CODE += ( -40000 ) + + NAIF_BODY_NAME += ( 'CLEM_SC_BUS' ) + NAIF_BODY_CODE += ( -40000 ) + + NAIF_BODY_NAME += ( 'CLEM_HIRES' ) + NAIF_BODY_CODE += ( -40001 ) + + NAIF_BODY_NAME += ( 'CLEM_UVVIS' ) + NAIF_BODY_CODE += ( -40002 ) + + NAIF_BODY_NAME += ( 'CLEM_NIR' ) + NAIF_BODY_CODE += ( -40003 ) + + NAIF_BODY_NAME += ( 'CLEM_LWIR' ) + NAIF_BODY_CODE += ( -40004 ) + + NAIF_BODY_NAME += ( 'CLEM_LIDAR' ) + NAIF_BODY_CODE += ( -40005 ) + + NAIF_BODY_NAME += ( 'CLEM_ASTAR' ) + NAIF_BODY_CODE += ( -40006 ) + + NAIF_BODY_NAME += ( 'CLEM_BSTAR' ) + NAIF_BODY_CODE += ( -40007 ) + + NAIF_BODY_NAME += ( 'CLEM_CPT' ) + NAIF_BODY_CODE += ( -40008 ) + + NAIF_BODY_NAME += ( 'CLEM_UVVIS_A' ) + NAIF_BODY_CODE += ( -40021 ) + + NAIF_BODY_NAME += ( 'CLEM_UVVIS_B' ) + NAIF_BODY_CODE += ( -40022 ) + + NAIF_BODY_NAME += ( 'CLEM_UVVIS_C' ) + NAIF_BODY_CODE += ( -40023 ) + + NAIF_BODY_NAME += ( 'CLEM_UVVIS_D' ) + NAIF_BODY_CODE += ( -40024 ) + + NAIF_BODY_NAME += ( 'CLEM_UVVIS_E' ) + NAIF_BODY_CODE += ( -40025 ) + + NAIF_BODY_NAME += ( 'CLEM_UVVIS_F' ) + NAIF_BODY_CODE += ( -40026 ) + + \begintext + diff --git a/tests/pytests/data/LUA3107H.161/dspse002.tsc b/tests/pytests/data/LUA3107H.161/dspse002.tsc new file mode 100644 index 000000000..daa3c0949 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/dspse002.tsc @@ -0,0 +1,73 @@ +DSPSE SPICE SCLK Kernel +-------------------------------------------------------- + + This file contains the data necessary to convert between DSPSE + spacecraft clock time (SCLK) and ephemeris time. + + NAIF suggests that you do not modify this file. If you do modify it, + be sure to indicate this in the `Version' section below. + + +Version +-------------------------------------------------------- + + This file is DSPSE version 1, released 18-JAN-1994. + + +Implementation notes +-------------------------------------------------------- + + You must load this file into the kernel pool before using any of the + SPICELIB SCLK routines. The code fragment + + CALL LDPOOL ( < name of this file > ) + + performs this task. To convert between ET and UTC, you will also need + to load a leapseconds kernel. The additional call to LDPOOL, + + CALL LDPOOL ( < name of your leapsecond file > ) + + will accomplish this. Note that you must supply the actual names of + the files used on your system as arguments to LDPOOL. Because the file + names are system dependent, we do not list them here. + + For more information, consult your SPICELIB required reading files. + The following areas are covered: + + SCLK system SCLK required reading + Time systems and conversion TIME required reading + Kernel pool KERNEL required reading + + +Kernel data +-------------------------------------------------------- + +The DSPSE clock zero count occurs at 1-JAN-1950/00:00:00 UTC. Nominally, +the clock will advance at UTC time. When a leapsecond occurs, the clock +will be adjusted accordingly. When this event occurs, a new partition +must be added to this file. To account for leapseconds prior to the +launch of the spacecraft, the begin time below is +1-JAN-1950/00:00:19.000. + + +\begindata + +SCLK_KERNEL_ID = ( @1994-01-18 ) + +SCLK_DATA_TYPE_40 = ( 1 ) +SCLK01_TIME_SYSTEM_40 = ( 2 ) +SCLK01_N_FIELDS_40 = ( 3 ) +SCLK01_MODULI_40 = ( 65536 10546.875 65536 ) +SCLK01_OFFSETS_40 = ( 0 0 0 ) +SCLK01_OUTPUT_DELIM_40 = ( 1 ) + +SCLK_PARTITION_START_40 = ( 0.0000000000000E+00 ) + +SCLK_PARTITION_END_40 = ( 4.5298483199999E+13 ) + +SCLK01_COEFFICIENTS_40 = ( + + 0.0000000000000E+00 -1.5778799398160E+09 8.6400000000000E+04 ) + +\begintext + diff --git a/tests/pytests/data/LUA3107H.161/lunarMeanEarth001.tf b/tests/pytests/data/LUA3107H.161/lunarMeanEarth001.tf new file mode 100644 index 000000000..a11b4a97a --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/lunarMeanEarth001.tf @@ -0,0 +1,370 @@ + +KPL/FK + + + SPICE Generic Lunar Reference Frame Specification Kernel + ===================================================================== + + Original file name: lunar_060616.tf + Creation date: 2006 June 16 18:54 + Created by: Nat Bachman (NAIF/JPL) + + Modified: 2007 July 10 15:02 + Modified By: Jeff Anderson + Note: Define lunar frame to default + to mean-earth + + + Introduction + ===================================================================== + + This kernel specifies lunar body-fixed reference frames for use by + SPICE-based application software. These reference frames are + associated with high-accuracy lunar orientation data provided by the + JPL Solar System Dynamics Group's planetary ephemerides (both + trajectory and lunar orientation data are stored in these ephemeris + files). These ephemerides have names of the form DE-nnn (DE stands + for "developmental ephemeris"). + + The frames specified by this kernel are realizations of two different + lunar reference systems: + + Principal axes (PA) system + -------------------------- + The axes of this system are defined by the principal axes of the + Moon. Note that, due to the nature of the Moon's orbit and + rotation, the Z axis of this system does not coincide with the + Moon's mean spin axis, nor does the X axis coincide with the mean + direction to the center of the Earth. + + Lunar principal axes frames realizing the lunar PA system and + specified by this kernel are associated with JPL planetary + ephemerides. Each new JPL planetary ephemeris can (but does not + necessarily) define a new realization of the lunar principal axes + system. Coordinates of lunar surface features expressed in lunar + PA frames can change slightly from one lunar ephemeris version to + the next. + + + Mean Earth/polar axis (ME) system + --------------------------------- + The Lunar mean Earth/axis system is a lunar body-fixed reference + system used in the IAU/IAG Working Group Report [2] to describe + the orientation of the Moon relative to the ICRF frame. The +Z + axis of this system is aligned with the mean lunar north pole, + while the prime meridian contains the the mean Earth direction. + + The mean directions used to define the axes of a mean Earth/polar + axis reference frame realizing the lunar ME system and specified + by this kernel are associated with a given JPL planetary + ephemeris version. The rotation between the mean Earth frame for + a given ephemeris version and the associated principal axes frame + is given by a constant matrix (see [1]). + + + For each JPL planetary ephemeris (DE), this kernel includes + specifications of the corresponding principal axes and mean Earth/ + polar axis frames. The names of these frames have the form + + LUNAR_DE-nnn_PR_AXES + + and + + LUNAR_DE-nn_MEAN_EARTH + + respectively. This set of DE-dependent frame specifications will + grow over time; frame specifications pertaining to older DEs will + be retained in later versions of this frame kernel. + + For each type of reference frame, there are two "generic" + frame specifications: these frames are simply aliases for the + two lunar body-fixed frames associated with the latest DE. The + generic frame names are + + LUNAR_PR_AXES + LUNAR_MEAN_EARTH + + SPICE users may, if they wish, modify this kernel to assign these + frame aliases to older DE-based frames. NAIF recommends that, if + this file is modified, the name of this file also be changed to + avoid confusion. + + + Comparison of PA and ME frames + ------------------------------ + + The rotation between the mean Earth frame for a given DE and the + associated principal axes frame for the same DE is given by a constant + matrix (see [1]). For DE-403, the rotation angle of this matrix is + approximately 0.028241 degrees; this is equivalent to approximately 860 m + when expressed as a displacement along a great circle on the Moon's + surface. + + + Comparison of DE-based and IAU/IAG report rotation data + ------------------------------------------------------- + + Within the SPICE system, the lunar ME frame specified by the + rotational elements from the IAU/IAG Working Group report [2] is + given the name IAU_MOON; the data defining this frame are provided + in a generic text PCK. + + The orientation of the lunar ME frame obtained from the DE-based + lunar libration data and application of the DE-based PA-to-ME + rotation described above does not agree closely with the lunar ME + frame orientation given by the rotational elements from the IAU/IAG + Working Group report (that is, the IAU_MOON frame). The difference + is due to truncation of the libration series used in the report's + formula for lunar orientation (see [1]). + + In the case of DE-403, for the time period ~2000-2020, this + time-dependent difference has an amplitude of approximately 0.005 + degrees, which is equivalent to approximately 150 m, measured along + a great circle on the Moon's surface, while the average value is + approximately 0.0025 degrees, or 75 m. + + + Using this Kernel + ===================================================================== + + In order for a SPICE-based application to use reference frames + specified by this kernel, the application must load both this kernel + and a binary lunar PCK containing lunar orientation data for the + time of interest. Normally the kernels need be loaded only once + during program initialization. + + SPICE users may find it convenient to use a meta-kernel (also called + a "FURNSH kernel") to name the kernels to be loaded. Below, we show + an example of such a meta-kernel, as well as the source code of a + small Fortran program that uses lunar body fixed frames. The + program's output is included as well. + + The kernel names shown here are simply used as examples; users must + select the kernels appropriate for their applications. + + Numeric results shown below may differ from those obtained on users' + computer systems. + + + Meta-kernel + ----------- + + Example meta-kernel showing use of + + - binary lunar PCK + - generic lunar frame kernel (FK) + - leapseconds kernel (LSK) + - planetary SPK + + 16-JUN-2006 (NJB) + + Note: to actually use this kernel, replace the @ + characters below with backslashes (\). The + backslash character cannot be used here because these + comments would be interpreted as actual load commands. + + @begindata + + KERNELS_TO_LOAD = ( 'de403_2000-2020_pa.bpc' + 'lunar_060616.tf' + '/kernels/gen/lsk/leapseconds.ker' + '/kernels/gen/spk/de405.bsp' ) + + @begintext + + + Example program + --------------- + + PROGRAM EX1 + IMPLICIT NONE + + INTEGER FILSIZ + PARAMETER ( FILSIZ = 255 ) + + CHARACTER*(FILSIZ) META + + DOUBLE PRECISION ET + DOUBLE PRECISION LT + DOUBLE PRECISION STME ( 6 ) + DOUBLE PRECISION STPA ( 6 ) + + C + C Prompt user for meta-kernel name. + C + CALL PROMPT ( 'Enter name of meta-kernel > ', META ) + + C + C Load lunar PCK, generic lunar frame kernel, + C leapseconds kernel, and planetary ephemeris + C via metakernel. + C + CALL FURNSH ( META ) + + C + C Convert a time of interest from UTC to ET. + C + CALL STR2ET ( '2006 jun 8 06:50:00', ET ) + + WRITE (*,*) 'ET (sec past J2000 TDB): ', ET + WRITE (*,*) ' State of Earth relative to Moon' + + C + C Find the geometric state of the Earth relative to the + C Moon at ET, expressed relative to the generic ME frame. + C + CALL SPKEZR ( 'Earth', ET, 'LUNAR_MEAN_EARTH', + . 'NONE', 'Moon', STME, LT ) + + WRITE (*,*) ' In ME frame:' + WRITE (*,*) STME + + C + C Find the geometric state of the Earth relative to the + C Moon at ET, expressed relative to the generic PA frame. + C + CALL SPKEZR ( 'Earth', ET, 'LUNAR_PR_AXES', + . 'NONE', 'Moon', STPA, LT ) + + WRITE (*,*) ' In PA frame:' + WRITE (*,*) STPA + + END + + + Program output + -------------- + + Enter name of meta-kernel > meta + ET (sec past J2000 TDB): 203021465. + State of Earth relative to Moon + In ME frame: + 391739.183 -33210.254 25299.0887 -0.0592286405 -0.048721834 0.0917188552 + In PA frame: + 391719.148 -33331.588 25449.2934 -0.0592788895 -0.0487034073 0.0916961762 + + + + References + ===================================================================== + + [1] A.S. Konopliv, S.W. Asmar, E. Carranza, W.L. Sjogren, and D.N. + Yuan (2001). "Recent Gravity Models as a Result of the Lunar + Prospector Mission," Icarus 150, pp. 1-18. + + [2] Seidelmann, P.K., Abalakin, V.K., Bursa, M., Davies, M.E., + Bergh, C. de, Lieske, J.H., Oberst, J., Simon, J.L., Standish, + E.M., Stooke, P., and Thomas, P.C. (2002). "Report of the + IAU/IAG Working Group on Cartographic Coordinates and Rotational + Elements of the Planets and Satellites: 2000," Celestial + Mechanics and Dynamical Astronomy, v.82, Issue 1, pp. 83-111. + + [3] Roncoli, R. (2005). "Lunar Constants and Models Document," + JPL D-32296. + + + Frame Specifications + ===================================================================== + + LUNAR_PR_AXES is the name of the generic lunar principal axes + reference frame. This frame is an alias for the principal axes + frame defined by the latest version of the JPL Solar System Dynamics + Group's planetary ephemeris. + + Currently LUNAR_PR_AXES is an alias for the lunar principal axes + frame associated with the planetary ephemeris DE-403. + + \begindata + + FRAME_LUNAR_PR_AXES = 310000 + FRAME_310000_NAME = 'LUNAR_PR_AXES' + FRAME_310000_CLASS = 4 + FRAME_310000_CLASS_ID = 310000 + FRAME_310000_CENTER = 301 + + TKFRAME_310000_SPEC = 'MATRIX' + TKFRAME_310000_RELATIVE = 'LUNAR_DE-403_PR_AXES' + TKFRAME_310000_MATRIX = ( 1 0 0 + 0 1 0 + 0 0 1 ) + + \begintext + + LUNAR_MEAN_EARTH is the name of the generic lunar mean Earth/ polar + axis reference frame. This frame is an alias for the mean + Earth/polar axis frame defined by the latest version of the JPL + Solar System Dynamics Group's planetary ephemeris. + + Currently LUNAR_MEAN_EARTH is an alias for the lunar mean Earth/ + polar axis frame associated with the planetary ephemeris DE-403. + + \begindata + + FRAME_LUNAR_MEAN_EARTH = 310001 + FRAME_310001_NAME = 'LUNAR_MEAN_EARTH' + FRAME_310001_CLASS = 4 + FRAME_310001_CLASS_ID = 310001 + FRAME_310001_CENTER = 301 + + TKFRAME_310001_SPEC = 'MATRIX' + TKFRAME_310001_RELATIVE = 'LUNAR_DE-403_MEAN_EARTH' + TKFRAME_310001_MATRIX = ( 1 0 0 + 0 1 0 + 0 0 1 ) + + \begintext + + + LUNAR_DE-403_PR_AXES is the name of the lunar principal axes + reference frame defined by JPL's DE-403 planetary ephemeris. + + \begindata + + FRAME_LUNAR_DE-403_PR_AXES = 310002 + FRAME_310002_NAME = 'LUNAR_DE-403_PR_AXES' + FRAME_310002_CLASS = 2 + FRAME_310002_CLASS_ID = 31000 + FRAME_310002_CENTER = 301 + + \begintext + + + + LUNAR_DE-403_MEAN_EARTH is the name of the lunar mean Earth/polar + axis reference frame defined by JPL's DE-403 planetary ephemeris. + + Rotation angles are from reference [1]. + + \begindata + + FRAME_LUNAR_DE-403_MEAN_EARTH = 310003 + FRAME_310003_NAME = 'LUNAR_DE-403_MEAN_EARTH' + FRAME_310003_CLASS = 4 + FRAME_310003_CLASS_ID = 310003 + FRAME_310003_CENTER = 301 + + TKFRAME_310003_SPEC = 'ANGLES' + TKFRAME_310003_RELATIVE = 'LUNAR_PR_AXES' + TKFRAME_310003_ANGLES = ( 63.8986 79.0768 0.1462 ) + TKFRAME_310003_AXES = ( 3, 2, 1 ) + TKFRAME_310003_UNITS = 'ARCSECONDS' + + \begintext + + Set to Mean Earth Lunar frame, dcook July 2007 + + \begindata + OBJECT_MOON_FRAME = 'LUNAR_MEAN_EARTH' + OBJECT_301_FRAME = 'LUNAR_MEAN_EARTH' + + \begintext + End of kernel + + + + + + + + + diff --git a/tests/pytests/data/LUA3107H.161/lunar_de403_1950-2199_pa.bpc b/tests/pytests/data/LUA3107H.161/lunar_de403_1950-2199_pa.bpc new file mode 100644 index 000000000..40930fe3e Binary files /dev/null and b/tests/pytests/data/LUA3107H.161/lunar_de403_1950-2199_pa.bpc differ diff --git a/tests/pytests/data/LUA3107H.161/naif0012.tls b/tests/pytests/data/LUA3107H.161/naif0012.tls new file mode 100644 index 000000000..e1afdee1b --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/naif0012.tls @@ -0,0 +1,152 @@ +KPL/LSK + + +LEAPSECONDS KERNEL FILE +=========================================================================== + +Modifications: +-------------- + +2016, Jul. 14 NJB Modified file to account for the leapsecond that + will occur on December 31, 2016. + +2015, Jan. 5 NJB Modified file to account for the leapsecond that + will occur on June 30, 2015. + +2012, Jan. 5 NJB Modified file to account for the leapsecond that + will occur on June 30, 2012. + +2008, Jul. 7 NJB Modified file to account for the leapsecond that + will occur on December 31, 2008. + +2005, Aug. 3 NJB Modified file to account for the leapsecond that + will occur on December 31, 2005. + +1998, Jul 17 WLT Modified file to account for the leapsecond that + will occur on December 31, 1998. + +1997, Feb 22 WLT Modified file to account for the leapsecond that + will occur on June 30, 1997. + +1995, Dec 14 KSZ Corrected date of last leapsecond from 1-1-95 + to 1-1-96. + +1995, Oct 25 WLT Modified file to account for the leapsecond that + will occur on Dec 31, 1995. + +1994, Jun 16 WLT Modified file to account for the leapsecond on + June 30, 1994. + +1993, Feb. 22 CHA Modified file to account for the leapsecond on + June 30, 1993. + +1992, Mar. 6 HAN Modified file to account for the leapsecond on + June 30, 1992. + +1990, Oct. 8 HAN Modified file to account for the leapsecond on + Dec. 31, 1990. + + +Explanation: +------------ + +The contents of this file are used by the routine DELTET to compute the +time difference + +[1] DELTA_ET = ET - UTC + +the increment to be applied to UTC to give ET. + +The difference between UTC and TAI, + +[2] DELTA_AT = TAI - UTC + +is always an integral number of seconds. The value of DELTA_AT was 10 +seconds in January 1972, and increases by one each time a leap second +is declared. Combining [1] and [2] gives + +[3] DELTA_ET = ET - (TAI - DELTA_AT) + + = (ET - TAI) + DELTA_AT + +The difference (ET - TAI) is periodic, and is given by + +[4] ET - TAI = DELTA_T_A + K sin E + +where DELTA_T_A and K are constant, and E is the eccentric anomaly of the +heliocentric orbit of the Earth-Moon barycenter. Equation [4], which ignores +small-period fluctuations, is accurate to about 0.000030 seconds. + +The eccentric anomaly E is given by + +[5] E = M + EB sin M + +where M is the mean anomaly, which in turn is given by + +[6] M = M + M t + 0 1 + +where t is the number of ephemeris seconds past J2000. + +Thus, in order to compute DELTA_ET, the following items are necessary. + + DELTA_TA + K + EB + M0 + M1 + DELTA_AT after each leap second. + +The numbers, and the formulation, are taken from the following sources. + + 1) Moyer, T.D., Transformation from Proper Time on Earth to + Coordinate Time in Solar System Barycentric Space-Time Frame + of Reference, Parts 1 and 2, Celestial Mechanics 23 (1981), + 33-56 and 57-68. + + 2) Moyer, T.D., Effects of Conversion to the J2000 Astronomical + Reference System on Algorithms for Computing Time Differences + and Clock Rates, JPL IOM 314.5--942, 1 October 1985. + +The variable names used above are consistent with those used in the +Astronomical Almanac. + +\begindata + +DELTET/DELTA_T_A = 32.184 +DELTET/K = 1.657D-3 +DELTET/EB = 1.671D-2 +DELTET/M = ( 6.239996D0 1.99096871D-7 ) + +DELTET/DELTA_AT = ( 10, @1972-JAN-1 + 11, @1972-JUL-1 + 12, @1973-JAN-1 + 13, @1974-JAN-1 + 14, @1975-JAN-1 + 15, @1976-JAN-1 + 16, @1977-JAN-1 + 17, @1978-JAN-1 + 18, @1979-JAN-1 + 19, @1980-JAN-1 + 20, @1981-JUL-1 + 21, @1982-JUL-1 + 22, @1983-JUL-1 + 23, @1985-JUL-1 + 24, @1988-JAN-1 + 25, @1990-JAN-1 + 26, @1991-JAN-1 + 27, @1992-JUL-1 + 28, @1993-JUL-1 + 29, @1994-JUL-1 + 30, @1996-JAN-1 + 31, @1997-JUL-1 + 32, @1999-JAN-1 + 33, @2006-JAN-1 + 34, @2009-JAN-1 + 35, @2012-JUL-1 + 36, @2015-JUL-1 + 37, @2017-JAN-1 ) + +\begintext + + diff --git a/tests/pytests/data/LUA3107H.161/pck00009.tpc b/tests/pytests/data/LUA3107H.161/pck00009.tpc new file mode 100644 index 000000000..bfadaab2b --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/pck00009.tpc @@ -0,0 +1,3639 @@ +KPL/PCK + + +P_constants (PcK) SPICE kernel file +=========================================================================== + + By: Nat Bachman (NAIF) 2010 March 3 + + +Purpose +-------------------------------------------------------- + + This file makes available for use in SPICE-based application + software orientation and size/shape data for natural bodies. The + principal source of the data is a published report by the IAU/IAG + Working Group on Cartographic Coordinates and Rotational Elements [1]. + + Orientation and size/shape data not provided by this file may be + available in mission-specific PCK files. Such PCKs may be the preferred + data source for mission-related applications. Mission-specific PCKs can + be found in PDS archives or on the NAIF web site at URL: + + http://naif.jpl.nasa.gov + + +File Organization +-------------------------------------------------------- + + The contents of this file are as follows. + + Introductory Information: + + -- Purpose + + -- File Organization + + -- Version description + + -- Disclaimer + + -- Sources + + -- Explanatory notes + + -- Body numbers and names + + + PcK Data: + + + Orientation Data + ---------------- + + -- Orientation constants for the Sun and planets. + Additional items included in this section: + + - Earth north geomagnetic centered dipole values + for epochs 1945-2000 + + - Mars prime meridian offset "lambda_a" + + -- Orientation constants for satellites + + -- Orientation constants for asteroids Eros, Gaspra, Ida, + Itokawa, and Vesta + + -- Orientation constants for comets 19P/Borrelly + and 9P/Tempel 1 + + + Radii of Bodies + --------------- + + -- Radii of Sun and planets + + -- Radii of satellites, where available + + -- Radii of asteroids Ceres, Eros, Gaspra, Ida, Itokawa, + Mathilde, Toutatis, and Vesta. + + -- Radii of comets 19P/Borrelly, Halley, 9P/Tempel 1, + and 81P/Wild 2 + + + +Version Description +-------------------------------------------------------- + + This file was created on March 3, 2010. This version + incorporates data from reference [1]. + + This file contains size, shape, and orientation data for all + objects described by the previous version of the file, except + for Kleopatra: a shape model for this body is not provided in [1] + because, according to this source, it had been "modeled from + low resolution radar data, and cannot be mapped from those + data." + + New objects covered by this file but not the previous + version are: + + 19P/Borrelly + Halley + 9P/Tempel 1 + 81P/Wild 2 + Ceres + Itokawa + Mathilde + Toutatis + + +Disclaimer +-------------------------------------------------------- + +Applicability of Data + + This P_constants file may not contain the parameter values that + you prefer. NAIF suggests that you inspect this file visually + before proceeding with any critical or extended data processing. + +File Modifications by Users + + Note that this file may be readily modified by you to change + values or add/delete parameters. NAIF requests that you update the + "by line," date, and version description section if you modify + this file. + +Known Limitations and Caveats + + Accuracy + -------- + + In general, the orientation models given here are claimed by the + IAU/IAG Working Group Report [1] to be accurate to 0.1 degree + ([1], p.158). However, NAIF notes that orientation models for + natural satellites and asteroids have in some cases changed + substantially with the availability of new observational data, so + users are urged to investigate the suitability for their + applications of the models presented here. + + Earth orientation + ----------------- + + NAIF strongly cautions against using the earth rotation model + (from [1]) for work demanding high accuracy. This model has been + determined by NAIF to have an error in the prime meridian location + of magnitude at least 150 arcseconds, with a local minimum + occurring during the year 1999. Regarding availability of better + earth orientation data for use with the SPICE system: + + Earth orientation data are available from NAIF in the form of + binary earth PCK files. NAIF employs an automated process to + create these files; each time JPL's Tracking Systems and + Applications Section produces a new earth orientation parameter + (EOP) file, a new PCK is produced. These PCKs cover a roughly + 10 year time span starting at Jan. 1, 2000. In these PCK files, + the following effects are accounted for in modeling the earth's + rotation: + + - Precession: 1976 IAU model + + - Nutation: 1980 IAU model, plus interpolated + EOP nutation corrections + + - Polar motion: interpolated from EOP file + + - True sidereal time: + + UT1 - UT1R (if needed): given by analytic formula + + TAI - UT1 (or UT1R): interpolated from EOP file + + UT1 - GMST: given by analytic formula + + equation of equinoxes: given by analytic formula + + where + + TAI = International Atomic Time + UT1 = Greenwich hour angle of computed mean sun - 12h + UT1R = Regularized UT1 + GMST = Greenwich mean sidereal time + + These kernels are available from the NAIF web site + + http://naif.jpl.nasa.gov + + (follow the links to Data, generic_kernels, and PCK data) or + + ftp://naif.jpl.nasa.gov/pub/naif/generic_kernels/pck + + or via anonymous ftp from the server + + naif.jpl.nasa.gov + + The kernels are in the path + + pub/naif/generic_kernels/pck + + At this time, these kernels have file names of the form + + earth_000101_yymmdd_yymmdd.bpc + + The second and third dates are, respectively, the file's + coverage end time and the epoch of the last datum. + + These binary PCK files are very accurate (error < 0.1 + microradian) for epochs preceding the epoch of the last datum. + For later epochs, the error rises to several microradians. + + Binary PCK files giving accurate earth orientation from 1972 to + 2007 and *low accuracy* predicted earth orientation from + 2007 to 2037 are also available in the same location. See the + aareadme.txt file at the "pck" URL above for details. + + Characteristics and names of the binary kernels described here + are subject to change. See the "pck" URL above for information + on current binary earth PCKs. + + + Lunar orientation + ----------------- + + The lunar orientation formula provided by this file is a + trigonometric polynomial approximation yielding the orientation of + the lunar "Mean Earth/Polar Axis" (ME) reference frame. A more + accurate approximation can be obtained by using both the NAIF + lunar frame kernel and the binary lunar orientation PCK file, + which are available on the NAIF web site (see URLS above) + and in the NAIF server's ftp area. The lunar frame kernel + is located in the path + + pub/naif/generic_kernels/fk/satellites + + and has a name of the form + + moon_yymmdd.tf + + The binary lunar PCK is in the path + + pub/naif/generic_kernels/pck + + and has a name of the form + + moon_pa_dennn_yyyy-yyyy.bpc + + See the "aareadme.txt" files in the paths shown above for details + on file contents and versions. We also suggest you refer to the + SPICE tutorial named "lunar_earth_pck-fk," which is available from + the NAIF web site. + + + Earth geomagnetic dipole + ------------------------ + + The SPICE Toolkit doesn't currently contain software to model the + earth's north geomagnetic centered dipole as a function of time. + As a convenience for users, the north dipole location from the + J2000 epoch was selected as a representative datum, and the + planetocentric longitude and latitude of this location have been + associated with the keywords + + BODY399_N_GEOMAG_CTR_DIPOLE_LON + BODY399_N_GEOMAG_CTR_DIPOLE_LAT + + Values for the earth's north geomagnetic centered dipole are + presented in comments as a discrete time series for the time range + 1945-2000. For details concerning the geomagnetic field model from + which these values were derived, including a discussion of the + model's accuracy, see [9]. + + + Mars prime meridian offset + -------------------------- + + The Mars prime meridian offset given by [5] is not used by + SPICE geometry software for computations involving the shape + of Mars (for example, in sub-observer point or surface intercept + computations). The value is provided for informational + purposes only. + + + Software limitations + -------------------- + + SPICE Toolkits prior to version N0057 cannot make use of + trigonometric polynomial terms in the formulas for orientation of + the planets. The only planets for which such terms are used are + Jupiter and Neptune. Use of trigonometric polynomial terms for + natural satellites is and has been supported for all SPICE Toolkit + versions. + + The second nutation precession angle (M2) for Mars is represented + by a quadratic polynomial in the 2006 IAU report. The SPICELIB + subroutine BODEUL can not handle this term (which is extremely + small), so we truncate the polynomial to a linear one. The + resulting orientation error has a maximum magnitude of less + than 0.0032 degrees over the time span 1996-2015 and less than + 0.0082 degrees over the time span 1986-2025. + + +Sources +-------------------------------------------------------- + + The sources for the constants listed in this file are: + + + [1] Seidelmann, P.K., Archinal, B.A., A'Hearn, M.F., + Conrad, A., Consolmagno, G.J., Hestroffer, D., + Hilton, J.L., Krasinsky, G.A., Neumann, G., + Oberst, J., Stooke, P., Tedesco, E.F., Tholen, D.J., + and Thomas, P.C. "Report of the IAU/IAG Working Group + on cartographic coordinates and rotational elements: 2006." + + [2] Seidelmann, P.K., Archinal, B.A., A'Hearn, M.F., + Cruikshank, D.P., Hilton, J.L., Keller, H.U., Oberst, J., + Simon, J.L., Stooke, P., Tholen, D.J., and Thomas, P.C. + "Report of the IAU/IAG Working Group on Cartographic + Coordinates and Rotational Elements of the Planets and + Satellites: 2003." + + [3] Nautical Almanac Office, United States Naval Observatory + and H.M. Nautical Almanac Office, Rutherford Appleton + Laboratory (2010). "The Astronomical Almanac for + the Year 2010," U.S. Government Printing Office, + Washington, D.C.: and The Stationary Office, London. + + [4] Nautical Almanac Office, United States Naval Observatory, + H.M. Nautical Almanac Office, Royal Greenwich + Observatory, Jet Propulsion Laboratory, Bureau des + Longitudes, and The Time Service and Astronomy + Departments, United States Naval Observatory (1992). + "Explanatory Supplement to the Astronomical Almanac," P. + Kenneth Seidelmann, ed. University Science Books, 20 + Edgehill Road, Mill Valley, CA 9494. + + [5] Duxbury, Thomas C. (2001). "IAU/IAG 2000 Mars Cartographic + Conventions," presentation to the Mars Express Data + Archive Working Group, Dec. 14, 2001. + + [6] Russell, C.T. and Luhmann, J.G. (1990). "Earth: Magnetic + Field and Magnetosphere." . Originally + published in "Encyclopedia of Planetary Sciences," J.H. + Shirley and R.W. Fainbridge, eds. Chapman and Hall, + New York, pp 208-211. + + [7] Russell, C.T. (1971). "Geophysical Coordinate + Transformations," Cosmic Electrodynamics 2 184-186. + NAIF document 181.0. + + [8] ESA/ESTEC Space Environment Information System (SPENVIS) + (2003). Web page: "Dipole approximations of the + geomagnetic field." . + + [9] International Association of Geomagnetism and Aeronomy + and International Union of Geodesy and Geophysics (2004). + Web page: "The 9th Generation International Geomagnetic + Reference Field." . + + [10] Davies, M.E., Abalakin, V.K., Bursa, M., Hunt, G.E., + and Lieske, J.H. (1989). "Report of the IAU/IAG/COSPAR + Working Group on Cartographic Coordinates and Rotational + Elements of the Planets and Satellites: 1988," Celestial + Mechanics and Dynamical Astronomy, v.46, no.2, pp. + 187-204. + + + Most values are from [1]. All exceptions are + commented where they occur in this file. The exceptions are: + + + -- Radii for the Sun are from [3]. + + -- The second nutation precession angle (M2) for Mars is + represented by a quadratic polynomial in the 2000 + IAU report. The SPICELIB subroutine BODEUL can not + handle this term (which is extremely small), so we + truncate the polynomial to a linear one. + + -- Earth north geomagnetic centered dipole values are from + [8]. The article [6] was used to check most of + these values, and the values were also re-computed from + the 9th generation IGRF [9] by Nat Bachman. + + -- The Mars prime meridian offset angle is from [5]. + + + "Old values" listed are from the SPICE P_constants file + pck00008.tpc dated September 21, 2004. Most of these values came + from the 2003 IAU report [2]. + + + + +Explanatory Notes +-------------------------------------------------------- + + This file, which is logically part of the SPICE P-kernel, contains + constants used to model the orientation, size and shape of the + Sun, planets, natural satellites, and selected comets and + asteroids. The orientation models express the direction of the + pole and location of the prime meridian of a body as a function of + time. The size/shape models ("shape models" for short) represent + all bodies as ellipsoids, using two equatorial radii and a polar + radius. Spheroids and spheres are obtained when two or all three + radii are equal. + + The SPICE Toolkit routines that use this file are documented in + the SPICE "Required Reading" file pck.req. They are also + documented in the "PCK" SPICE tutorial, which is available on + the NAIF web site. + +File Format + + A terse description of the PCK file format is given here. See the + SPICE "Required Reading" files pck.req and kernel.req for a + detailed explanation of the SPICE text kernel file format. The + files pck.req and kernel.req are included in the documentation + provided with the SPICE Toolkit. + + The file starts out with the ``ID word'' string + + KPL/PCK + + This string identifies the file as a text kernel containing PCK + data. + + This file consists of a series of comment blocks and data blocks. + Comment blocks, which contain free-form descriptive or explanatory + text, are preceded by a \begintext token. Data blocks follow a + \begindata token. In order to be recognized, each of these tokens + must be placed on a line by itself. + + The portion of the file preceding the first data block is treated + as a comment block; it doesn't require an initial \begintext + token. + + This file identifies data using a series of + + KEYWORD = VALUE + + assignments. The left hand side of each assignment is a + "kernel variable" name; the right hand side is an associated value + or list of values. The SPICE subroutine API allows SPICE routines + and user applications to retrieve the set of values associated + with each kernel variable name. + + Kernel variable names are case-sensitive and are limited to + 32 characters in length. + + Numeric values may be integer or floating point. String values + are normally limited to 80 characters in length; however, SPICE + provides a mechanism for identifying longer, "continued" strings. + See the SPICE routine STPOOL for details. + + String values are single quoted. + + When the right hand side of an assignment is a list of values, + the list items may be separated by commas or simply by blanks. + The list must be bracketed by parentheses. Example: + + BODY399_RADII = ( 6378.14 6378.14 6356.75 ) + + Any blanks preceding or following keyword names, values and equal + signs are ignored. + + Assignments may be spread over multiple lines, for example: + + BODY399_RADII = ( 6378.14 + 6378.14 + 6356.75 ) + + This file may contain blank lines anywhere. Non-printing + characters including TAB should not be present in the file: the + presence of such characters may cause formatting errors when the + file is viewed. + +Time systems and reference frames + + The 2006 IAU/IAG Working Group Report [1] states the time scale + used as the independent variable for the rotation formulas is + Barycentric Dynamical Time (TDB) and that the epoch of variable + quantities is J2000 TDB (2000 Jan 1 12:00 TDB). Throughout SPICE + documentation and in this file, we use the names "J2000 TDB" and + "J2000" for this epoch. The name "J2000.0" is equivalent. + + SPICE documentation refers to the time system used in this file + as either "ET" or "TDB." SPICE software makes no distinction + between TDB and the time system associated with the independent + variable of the JPL planetary ephemerides T_eph. + + The inertial reference frame used for the rotational elements in + this file is identified by [1] as the ICRF (International + Celestial Reference Frame). + + The SPICE PCK software that reads this file uses the label "J2000" + to refer to the ICRF; this is actually a mislabeling which has + been retained in the interest of backward compatibility. Using + data from this file, by means of calls to the SPICE frame + transformation routines, will actually compute orientation + relative to the ICRF. + + The difference between the J2000 frame and the ICRF is + on the order of tens of milliarcseconds and is well below the + accuracy level of the formulas in this file. + +Orientation models + + All of the orientation models use three Euler angles to describe + the orientation of the coordinate axes of the "Body Equator and + Prime Meridian" system with respect to an inertial system. By + default, the inertial system is the ICRF (labeled as "J2000"), but + other frames can be specified in the file. See the PCK Required + Reading for details. + + The first two angles, in order, are the ICRF right ascension and + declination (henceforth RA and DEC) of the north pole of a body as + a function of time. The third angle is the prime meridian location + (represented by "W"), which is expressed as a rotation about the + north pole, and is also a function of time. + + For each body, the expressions for the north pole's right + ascension and declination, as well as prime meridian location, are + sums (as far as the models that appear in this file are concerned) + of quadratic polynomials and trigonometric polynomials, where the + independent variable is time. + + In this file, the time arguments in expressions always refer to + Barycentric Dynamical Time (TDB), measured in centuries or days + past a reference epoch. By default, the reference epoch is the + J2000 epoch, which is Julian ephemeris date 2451545.0, but other + epochs can be specified in the file. See the PCK Required Reading + for details. + + Orientation models for satellites and some planets (including + Jupiter) involve both polynomial terms and trigonometric terms. + The arguments of the trigonometric terms are linear polynomials. + In this file, we call the arguments of these trigonometric terms + "nutation precession angles." + + Example: 2006 IAU Model for orientation of Jupiter. Note that + these values are used as an example only; see the data area below + for current values. + + Right ascension + --------------- + + alpha = 268.056595 - 0.006499 T + 0.000117 sin(Ja) + 0 + 0.000938 sin(Jb) + 0.001432 sin(Jc) + + 0.000030 sin(Jd) + 0.002150 sin(Je) + + Declination + ----------- + + delta = 64.495303 + 0.002413 T + 0.000050 cos(Ja) + 0 + 0.000404 cos(Jb) + 0.000617 cos(Jc) + - 0.000013 cos(Jd) + 0.000926 cos(Je) + + Prime meridian + -------------- + + W = 284.95 + 870.5366420 d + + + Here + + T represents centuries past J2000 ( TDB ), + + d represents days past J2000 ( TDB ). + + Ja-Je are nutation precession angles. + + In this file, the polynomials' coefficients above are assigned + to kernel variable names (left-hand-side symbols) as follows + + BODY599_POLE_RA = ( 268.056595 -0.006499 0. ) + BODY599_POLE_DEC = ( 64.495303 0.002413 0. ) + BODY599_PM = ( 284.95 870.5366420 0. ) + + and the trigonometric polynomials' coefficients are assigned + as follows + + BODY599_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000117 + 0.000938 + 0.001432 + 0.000030 + 0.002150 ) + + BODY599_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000050 + 0.000404 + 0.000617 + -0.000013 + 0.000926 ) + + BODY599_NUT_PREC_PM = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0 + 0.0 + 0.0 + 0.0 + 0.0 ) + + Note the number "599"; this is the NAIF ID code for Jupiter. + + In this file, the polynomial expressions for the nutation + precession angles are listed along with the planet's RA, DEC, and + prime meridian terms. Below are the 2006 IAU nutation precession + angles for the Jupiter system. + + J1 = 73.32 + 91472.9 T + J2 = 24.62 + 45137.2 T + J3 = 283.90 + 4850.7 T + J4 = 355.80 + 1191.3 T + J5 = 119.90 + 262.1 T + J6 = 229.80 + 64.3 T + J7 = 352.25 + 2382.6 T + J8 = 113.35 + 6070.0 T + + J9 = 146.64 + 182945.8 T + J10 = 49.24 + 90274.4 T + + Ja = 99.360714 + 4850.4046 T + Jb = 175.895369 + 1191.9605 T + Jc = 300.323162 + 262.5475 T + Jd = 114.012305 + 6070.2476 T + Je = 49.511251 + 64.3000 T + + Here + + T represents centuries past J2000 ( TDB ) + + J1-J10 and Ja-Je are the nutation precession angles. The angles + J9 and J10 are equal to 2*J1 and 2*J2, respectively. + + Angles J9 and J10 are not present in [1]; they have been added + to fit the terms 2*J1 and 2*J2, which appear in the orientation + models of several satellites, into a form that can be accepted + by the PCK system. + + The assignment of the nutation precession angles for the + Jupiter system is as follows: + + BODY5_NUT_PREC_ANGLES = ( 73.32 91472.9 + 24.62 45137.2 + 283.90 4850.7 + 355.80 1191.3 + 119.90 262.1 + 229.80 64.3 + 352.25 2382.6 + 113.35 6070.0 + 146.64 182945.8 + 49.24 90274.4 + 99.360714 4850.4046 + 175.895369 1191.9605 + 300.323162 262.5475 + 114.012305 6070.2476 + 49.511251 64.3000 ) + + You'll see an additional symbol grouped with the ones listed + above; it is + + BODY599_LONG_AXIS + + This term is zero for all bodies except Mars. It represents the + angular offset between the meridian containing the longest axis of + the triaxial ellipsoid used to model a body's surface and the + prime meridian of the body. + + The pattern of the formulas for satellite orientation is similar + to that for Jupiter. Example: 2006 IAU values for Io. Again, these + values are used as an example only; see the data area below for + current values. + + Right ascension + --------------- + + alpha = 268.05 - 0.009 T + 0.094 sin(J3) + 0.024 sin(J4) + 0 + + Declination + ----------- + + delta = 64.50 + 0.003 T + 0.040 cos(J3) + 0.011 cos(J4) + 0 + + Prime meridian + -------------- + + W = 200.39 + 203.4889538 d - 0.085 sin(J3) - 0.022 sin(J4) + + + d represents days past J2000. + + J3 and J4 are nutation precession angles. + + The polynomial terms are assigned to symbols by the statements + + BODY501_POLE_RA = ( 268.05 -0.009 0. ) + BODY501_POLE_DEC = ( 64.50 0.003 0. ) + BODY501_PM = ( 200.39 203.4889538 0. ) + + The coefficients of the trigonometric terms are assigned to symbols by + the statements + + BODY501_NUT_PREC_RA = ( 0. 0. 0.094 0.024 ) + BODY501_NUT_PREC_DEC = ( 0. 0. 0.040 0.011 ) + BODY501_NUT_PREC_PM = ( 0. 0. -0.085 -0.022 ) + + 501 is the NAIF ID code for Io. + + SPICE software expects the models for satellite orientation to + follow the form of the model shown here: the polynomial portions of the + RA, DEC, and W expressions are expected to be quadratic, the + trigonometric terms for RA and W (satellite prime meridian) are expected + to be linear combinations of sines of nutation precession angles, the + trigonometric terms for DEC are expected to be linear combinations of + cosines of nutation precession angles, and the polynomials for the + nutation precession angles themselves are expected to be linear. + + Eventually, the software will handle more complex expressions, we + expect. + + +Shape models + + There is only one kind of shape model supported by the SPICE Toolkit + software at present: the triaxial ellipsoid. The 2006 IAU report does + not use any other models, except in the case of Mars, where + separate values are given for the north and south polar radii. + + For each body, three radii are listed: The first number is + the largest equatorial radius (the length of the semi-axis + containing the prime meridian), the second number is the smaller + equatorial radius, and the third is the polar radius. + + Example: Radii of the Earth. + + BODY399_RADII = ( 6378.14 6378.14 6356.75 ) + + +Body Numbers and Names +-------------------------------------------------------- + + + 1 Mercury barycenter + 2 Venus barycenter + 3 Earth barycenter + 4 Mars barycenter + 5 Jupiter barycenter + 6 Saturn barycenter + 7 Uranus barycenter + 8 Neptune barycenter + 9 Pluto barycenter + 10 Sun + + + 199 Mercury + + + 299 Venus + + + 399 Earth + + 301 Moon + + + 499 Mars + + 401 Phobos 402 Deimos + + + 599 Jupiter + + 501 Io 502 Europa 503 Ganymede 504 Callisto + 505 Amalthea 506 Himalia 507 Elara 508 Pasiphae + 509 Sinope 510 Lysithea 511 Carme 512 Ananke + 513 Leda 514 Thebe 515 Adrastea 516 Metis + + + 699 Saturn + + 601 Mimas 602 Enceladus 603 Tethys 604 Dione + 605 Rhea 606 Titan 607 Hyperion 608 Iapetus + 609 Phoebe 610 Janus 611 Epimetheus 612 Helene + 613 Telesto 614 Calypso 615 Atlas 616 Prometheus + 617 Pandora 618 Pan + + + 799 Uranus + + 701 Ariel 702 Umbriel 703 Titania 704 Oberon + 705 Miranda 706 Cordelia 707 Ophelia 708 Bianca + 709 Cressida 710 Desdemona 711 Juliet 712 Portia + 713 Rosalind 714 Belinda 715 Puck + + + 899 Neptune + + 801 Triton 802 Nereid 803 Naiad 804 Thalassa + 805 Despina 806 Galatea 807 Larissa 808 Proteus + + + 999 Pluto + + 901 Charon + + + 1000005 Comet 19P/Borrelly + 1000036 Comet Halley + 1000093 Comet 9P/Tempel 1 + 1000107 Comet 81P/Wild 2 + + 2000001 Asteroid Ceres + 2000004 Asteroid Vesta + 2000216 Asteroid Kleopatra + 2000253 Asteroid Mathilde + 2000433 Asteroid Eros + 2004179 Asteroid Toutatis + 2025143 Asteroid Itokawa + 2431010 Asteroid Ida + 9511010 Asteroid Gaspra + + +Orientation Constants for the Sun and Planets +-------------------------------------------------------- + + +Sun + + Old values: + + Values are from the 2003 IAU report. + + + body10_pole_ra = ( 286.13 0. 0. ) + body10_pole_dec = ( 63.87 0. 0. ) + body10_pm = ( 84.10 14.18440 0. ) + body10_long_axis = ( 0. ) + + Current values: + + \begindata + + BODY10_POLE_RA = ( 286.13 0. 0. ) + BODY10_POLE_DEC = ( 63.87 0. 0. ) + BODY10_PM = ( 84.176 14.18440 0. ) + BODY10_LONG_AXIS = ( 0. ) + + \begintext + +Mercury + + Old values: + + Values are unchanged in the 2006 IAU report. + + + Current values: + + \begindata + + BODY199_POLE_RA = ( 281.01 -0.033 0. ) + BODY199_POLE_DEC = ( 61.45 -0.005 0. ) + BODY199_PM = ( 329.548 6.1385025 0. ) + + BODY199_LONG_AXIS = ( 0. ) + + \begintext + + +Venus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY299_POLE_RA = ( 272.76 0. 0. ) + BODY299_POLE_DEC = ( 67.16 0. 0. ) + BODY299_PM = ( 160.20 -1.4813688 0. ) + + BODY299_LONG_AXIS = ( 0. ) + + \begintext + + +Earth + + Old values: + + Values are unchanged in the 2006 report. + + + Current values: + + \begindata + + BODY399_POLE_RA = ( 0. -0.641 0. ) + BODY399_POLE_DEC = ( 90. -0.557 0. ) + BODY399_PM = ( 190.147 360.9856235 0. ) + BODY399_LONG_AXIS = ( 0. ) + + \begintext + + + Nutation precession angles for the Earth-Moon system: + + The linear coefficients have been scaled up from degrees/day + to degrees/century, because the SPICELIB PCK reader expects + these units. The original constants were: + + 125.045D0 -0.0529921D0 + 250.089D0 -0.1059842D0 + 260.008D0 13.0120009D0 + 176.625D0 13.3407154D0 + 357.529D0 0.9856003D0 + 311.589D0 26.4057084D0 + 134.963D0 13.0649930D0 + 276.617D0 0.3287146D0 + 34.226D0 1.7484877D0 + 15.134D0 -0.1589763D0 + 119.743D0 0.0036096D0 + 239.961D0 0.1643573D0 + 25.053D0 12.9590088D0 + + + \begindata + + + BODY3_NUT_PREC_ANGLES = ( 125.045 -1935.5364525000 + 250.089 -3871.0729050000 + 260.008 475263.3328725000 + 176.625 487269.6299850000 + 357.529 35999.0509575000 + 311.589 964468.4993100000 + 134.963 477198.8693250000 + 276.617 12006.3007650000 + 34.226 63863.5132425000 + 15.134 -5806.6093575000 + 119.743 131.8406400000 + 239.961 6003.1503825000 + 25.053 473327.7964200000 ) + + + \begintext + + + Earth north geomagnetic centered dipole: + + Old values: + + Values are from [7]. Note the year of publication was 1971. + + body399_mag_north_pole_lon = ( -69.761 ) + body399_mag_north_pole_lat = ( 78.565 ) + + + Current values: + + The north dipole location is time-varying. The values shown + below, taken from [8], represent a discrete sampling of the + north dipole location from 1945 to 2000. The terms DGRF and + IGRF refer to, respectively, "Definitive Geomagnetic + Reference Field" and "International Geomagnetic Reference + Field." See references [6], [8], and [9] for details. + + Coordinates are planetocentric. + + Data source Lat Lon + ----------- ----- ------ + DGRF 1945 78.47 291.47 + DGRF 1950 78.47 291.15 + DGRF 1955 78.46 290.84 + DGRF 1960 78.51 290.53 + DGRF 1965 78.53 290.15 + DGRF 1970 78.59 289.82 + DGRF 1975 78.69 289.53 + DGRF 1980 78.81 289.24 + DGRF 1985 78.97 289.10 + DGRF 1990 79.13 288.89 + IGRF 1995 79.30 288.59 + IGRF 2000 79.54 288.43 + + + Values are given for the epoch 2000 and are from the final row + of the above table, which is from [8]. As shown by the table + these values constitute a low-accuracy approximation for epochs + not close to 2000. + + \begindata + + BODY399_N_GEOMAG_CTR_DIPOLE_LON = ( 288.43 ) + BODY399_N_GEOMAG_CTR_DIPOLE_LAT = ( 79.54 ) + + \begintext + + +Mars + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY499_POLE_RA = ( 317.68143 -0.1061 0. ) + BODY499_POLE_DEC = ( 52.88650 -0.0609 0. ) + BODY499_PM = ( 176.630 350.89198226 0. ) + + \begintext + + Source [5] specifies the following value for the lambda_a term + (BODY499_LONG_AXIS ) for Mars. This term is the POSITIVE EAST + LONGITUDE, measured from the prime meridian, of the meridian + containing the longest axis of the reference ellipsoid. + (CAUTION: previous values were POSITIVE WEST.) + + body499_long_axis = ( 252. ) + + We list this lambda_a value for completeness. The IAU report + [1] gives equal values for both equatorial radii, so the + lambda_a offset does not apply to the IAU model. + + The 2003 IAU report defines M2, the second nutation precession angle, + by: + + 2 + 192.93 + 1128.4096700 d + 8.864 T + + We truncate the M2 series to a linear expression, because the PCK + software cannot handle the quadratic term. + + Again, the linear terms are scaled by 36525.0: + + -0.4357640000000000 --> -15916.28010000000 + 1128.409670000000 --> 41215163.19675000 + -1.8151000000000000E-02 --> -662.9652750000000 + + We also introduce a fourth nutation precession angle, which + is the pi/2-complement of the third angle. This angle is used + in computing the prime meridian location for Deimos. See the + discussion of this angle below in the section containing orientation + constants for Deimos. + + \begindata + + BODY4_NUT_PREC_ANGLES = ( 169.51 -15916.2801 + 192.93 41215163.19675 + 53.47 -662.965275 + 36.53 662.965275 ) + + \begintext + + +Jupiter + + Old values: + + Values are from the 2003 IAU report. + + + body599_pole_ra = ( 268.05 -0.009 0. ) + body599_pole_dec = ( 64.49 0.003 0. ) + body599_pm = ( 284.95 870.5366420 0. ) + body599_long_axis = ( 0. ) + + body5_nut_prec_angles = ( 73.32 91472.9 + 24.62 45137.2 + 283.90 4850.7 + 355.80 1191.3 + 119.90 262.1 + 229.80 64.3 + 352.35 2382.6 + 113.35 6070.0 + 146.64 182945.8 + 49.24 90274.4 ) + + + + Current values: + + The number of nutation precession angles is 15. The ninth and + tenth are twice the first and second, respectively. The + eleventh through fifteenth correspond to angles JA-JE in + the 2006 IAU report; angles JA-JE were not used prior to that + report. + + \begindata + + + BODY599_POLE_RA = ( 268.056595 -0.006499 0. ) + BODY599_POLE_DEC = ( 64.495303 0.002413 0. ) + BODY599_PM = ( 284.95 870.5366420 0. ) + BODY599_LONG_AXIS = ( 0. ) + + BODY599_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000117 + 0.000938 + 0.001432 + 0.000030 + 0.002150 ) + + BODY599_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.000050 + 0.000404 + 0.000617 + -0.000013 + 0.000926 ) + + BODY599_NUT_PREC_PM = ( 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0 + 0.0 + 0.0 + 0.0 + 0.0 ) + + + BODY5_NUT_PREC_ANGLES = ( 73.32 91472.9 + 24.62 45137.2 + 283.90 4850.7 + 355.80 1191.3 + 119.90 262.1 + 229.80 64.3 + 352.25 2382.6 + 113.35 6070.0 + 146.64 182945.8 + 49.24 90274.4 + 99.360714 4850.4046 + 175.895369 1191.9605 + 300.323162 262.5475 + 114.012305 6070.2476 + 49.511251 64.3000 ) + \begintext + + +Saturn + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY699_POLE_RA = ( 40.589 -0.036 0. ) + BODY699_POLE_DEC = ( 83.537 -0.004 0. ) + BODY699_PM = ( 38.90 810.7939024 0. ) + BODY699_LONG_AXIS = ( 0. ) + + \begintext + + The first seven angles given here are the angles S1 + through S7 from the 2000 report; the eighth and + ninth angles are 2*S1 and 2*S2, respectively. + + + \begindata + + BODY6_NUT_PREC_ANGLES = ( 353.32 75706.7 + 28.72 75706.7 + 177.40 -36505.5 + 300.00 -7225.9 + 316.45 506.2 + 345.20 -1016.3 + 29.80 -52.1 + 706.64 151413.4 + 57.44 151413.4 ) + \begintext + + +Uranus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY799_POLE_RA = ( 257.311 0. 0. ) + BODY799_POLE_DEC = ( -15.175 0. 0. ) + BODY799_PM = ( 203.81 -501.1600928 0. ) + BODY799_LONG_AXIS = ( 0. ) + + \begintext + + The first 16 angles given here are the angles U1 + through U16 from the 2000 report; the 17th and + 18th angles are 2*U11 and 2*U12, respectively. + + \begindata + + BODY7_NUT_PREC_ANGLES = ( 115.75 54991.87 + 141.69 41887.66 + 135.03 29927.35 + 61.77 25733.59 + 249.32 24471.46 + 43.86 22278.41 + 77.66 20289.42 + 157.36 16652.76 + 101.81 12872.63 + 138.64 8061.81 + 102.23 -2024.22 + 316.41 2863.96 + 304.01 -51.94 + 308.71 -93.17 + 340.82 -75.32 + 259.14 -504.81 + 204.46 -4048.44 + 632.82 5727.92 ) + + \begintext + + + +Neptune + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY899_POLE_RA = ( 299.36 0. 0. ) + BODY899_POLE_DEC = ( 43.46 0. 0. ) + BODY899_PM = ( 253.18 536.3128492 0. ) + BODY899_LONG_AXIS = ( 0. ) + + + BODY899_NUT_PREC_RA = ( 0.70 0. 0. 0. 0. 0. 0. 0. ) + BODY899_NUT_PREC_DEC = ( -0.51 0. 0. 0. 0. 0. 0. 0. ) + BODY899_NUT_PREC_PM = ( -0.48 0. 0. 0. 0. 0. 0. 0. ) + + \begintext + + The 2000 report defines the nutation precession angles + + N, N1, N2, ... , N7 + + and also uses the multiples of N1 and N7 + + 2*N1 + + and + + 2*N7, 3*N7, ..., 9*N7 + + In this file, we treat the angles and their multiples as + separate angles. In the kernel variable + + BODY8_NUT_PREC_ANGLES + + the order of the angles is + + N, N1, N2, ... , N7, 2*N1, 2*N7, 3*N7, ..., 9*N7 + + Each angle is defined by a linear polynomial, so two + consecutive array elements are allocated for each + angle. The first term of each pair is the constant term, + the second is the linear term. + + \begindata + + BODY8_NUT_PREC_ANGLES = ( 357.85 52.316 + 323.92 62606.6 + 220.51 55064.2 + 354.27 46564.5 + 75.31 26109.4 + 35.36 14325.4 + 142.61 2824.6 + 177.85 52.316 + 647.840 125213.200 + 355.700 104.632 + 533.550 156.948 + 711.400 209.264 + 889.250 261.580 + 1067.100 313.896 + 1244.950 366.212 + 1422.800 418.528 + 1600.650 470.844 ) + + \begintext + + + +Pluto + + Old values: + + Values are from the 2003 IAU report. + + BODY999_POLE_RA = ( 313.02 0. 0. ) + BODY999_POLE_DEC = ( 9.09 0. 0. ) + BODY999_PM = ( 236.77 -56.3623195 0. ) + BODY999_LONG_AXIS = ( 0. ) + + + Current values: + + \begindata + + BODY999_POLE_RA = ( 312.993 0. 0. ) + BODY999_POLE_DEC = ( 6.163 0. 0. ) + BODY999_PM = ( 237.305 -56.3625225 0. ) + BODY999_LONG_AXIS = ( 0. ) + + \begintext + + + + +Orientation constants for the satellites +-------------------------------------------------------- + + +Satellites of Earth + + Old values: + + Values are unchanged in the 2006 IAU report. + + + New values: + + \begindata + + + + + + BODY301_POLE_RA = ( 269.9949 0.0031 0. ) + BODY301_POLE_DEC = ( 66.5392 0.0130 0. ) + BODY301_PM = ( 38.3213 13.17635815 -1.4D-12 ) + BODY301_LONG_AXIS = ( 0. ) + + BODY301_NUT_PREC_RA = ( -3.8787 -0.1204 0.0700 -0.0172 + 0.0 0.0072 0.0 0.0 + 0.0 -0.0052 0.0 0.0 + 0.0043 ) + + BODY301_NUT_PREC_DEC = ( 1.5419 0.0239 -0.0278 0.0068 + 0.0 -0.0029 0.0009 0.0 + 0.0 0.0008 0.0 0.0 + -0.0009 ) + + BODY301_NUT_PREC_PM = ( 3.5610 0.1208 -0.0642 0.0158 + 0.0252 -0.0066 -0.0047 -0.0046 + 0.0028 0.0052 0.0040 0.0019 + -0.0044 ) + \begintext + + + +Satellites of Mars + + + Phobos + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + The quadratic prime meridian term is scaled by 1/36525**2: + + 8.864000000000000 ---> 6.6443009930565219E-09 + + \begindata + + BODY401_POLE_RA = ( 317.68 -0.108 0. ) + BODY401_POLE_DEC = ( 52.90 -0.061 0. ) + BODY401_PM = ( 35.06 1128.8445850 6.6443009930565219E-09 ) + + BODY401_LONG_AXIS = ( 0. ) + + BODY401_NUT_PREC_RA = ( 1.79 0. 0. 0. ) + BODY401_NUT_PREC_DEC = ( -1.08 0. 0. 0. ) + BODY401_NUT_PREC_PM = ( -1.42 -0.78 0. 0. ) + + + \begintext + + + Deimos + + Old values: + + Values are unchanged in the 2006 IAU report. + + + New values: + + The Deimos prime meridian expression is: + + + 2 + W = 79.41 + 285.1618970 d - 0.520 T - 2.58 sin M + 3 + + + 0.19 cos M . + 3 + + + At the present time, the PCK kernel software (the routine + BODEUL in particular) cannot handle the cosine term directly, + but we can represent it as + + 0.19 sin M + 4 + + where + + M = 90.D0 - M + 4 3 + + Therefore, the nutation precession angle assignments for Phobos + and Deimos contain four coefficients rather than three. + + The quadratic prime meridian term is scaled by 1/36525**2: + + -0.5200000000000000 ---> -3.8978300049519307E-10 + + \begindata + + BODY402_POLE_RA = ( 316.65 -0.108 0. ) + BODY402_POLE_DEC = ( 53.52 -0.061 0. ) + BODY402_PM = ( 79.41 285.1618970 -3.897830D-10 ) + BODY402_LONG_AXIS = ( 0. ) + + BODY402_NUT_PREC_RA = ( 0. 0. 2.98 0. ) + BODY402_NUT_PREC_DEC = ( 0. 0. -1.78 0. ) + BODY402_NUT_PREC_PM = ( 0. 0. -2.58 0.19 ) + + \begintext + + + + +Satellites of Jupiter + + + Io + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY501_POLE_RA = ( 268.05 -0.009 0. ) + BODY501_POLE_DEC = ( 64.50 0.003 0. ) + BODY501_PM = ( 200.39 203.4889538 0. ) + BODY501_LONG_AXIS = ( 0. ) + + BODY501_NUT_PREC_RA = ( 0. 0. 0.094 0.024 ) + BODY501_NUT_PREC_DEC = ( 0. 0. 0.040 0.011 ) + BODY501_NUT_PREC_PM = ( 0. 0. -0.085 -0.022 ) + + \begintext + + + + Europa + + + Old values: + + Values are from the 2003 IAU report. + + + body502_pole_ra = ( 268.08 -0.009 0. ) + body502_pole_dec = ( 64.51 0.003 0. ) + body502_pm = ( 35.67 101.3747235 0. ) + body502_long_axis = ( 0. ) + + body502_nut_prec_ra = ( 0. 0. 0. 1.086 0.060 0.015 0.009 ) + body502_nut_prec_dec = ( 0. 0. 0. 0.468 0.026 0.007 0.002 ) + body502_nut_prec_pm = ( 0. 0. 0. -0.980 -0.054 -0.014 -0.008 ) + + + Current values: + + \begindata + + BODY502_POLE_RA = ( 268.08 -0.009 0. ) + BODY502_POLE_DEC = ( 64.51 0.003 0. ) + BODY502_PM = ( 36.022 101.3747235 0. ) + BODY502_LONG_AXIS = ( 0. ) + + BODY502_NUT_PREC_RA = ( 0. 0. 0. 1.086 0.060 0.015 0.009 ) + BODY502_NUT_PREC_DEC = ( 0. 0. 0. 0.468 0.026 0.007 0.002 ) + BODY502_NUT_PREC_PM = ( 0. 0. 0. -0.980 -0.054 -0.014 -0.008 ) + + \begintext + + + Ganymede + + Old values: + + Values are unchanged in the 2006 IAU report. + + + Current values: + + \begindata + + BODY503_POLE_RA = ( 268.20 -0.009 0. ) + BODY503_POLE_DEC = ( 64.57 0.003 0. ) + BODY503_PM = ( 44.064 50.3176081 0. ) + BODY503_LONG_AXIS = ( 0. ) + + BODY503_NUT_PREC_RA = ( 0. 0. 0. -0.037 0.431 0.091 ) + BODY503_NUT_PREC_DEC = ( 0. 0. 0. -0.016 0.186 0.039 ) + BODY503_NUT_PREC_PM = ( 0. 0. 0. 0.033 -0.389 -0.082 ) + + \begintext + + + Callisto + + Old values: + + Values are unchanged in the 2006 IAU report. + + + Current values: + + + \begindata + + BODY504_POLE_RA = ( 268.72 -0.009 0. ) + BODY504_POLE_DEC = ( 64.83 0.003 0. ) + BODY504_PM = ( 259.51 21.5710715 0. ) + BODY504_LONG_AXIS = ( 0. ) + + BODY504_NUT_PREC_RA = ( 0. 0. 0. 0. -0.068 0.590 0. 0.010 ) + BODY504_NUT_PREC_DEC = ( 0. 0. 0. 0. -0.029 0.254 0. -0.004 ) + BODY504_NUT_PREC_PM = ( 0. 0. 0. 0. 0.061 -0.533 0. -0.009 ) + + \begintext + + + Amalthea + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY505_POLE_RA = ( 268.05 -0.009 0. ) + BODY505_POLE_DEC = ( 64.49 0.003 0. ) + BODY505_PM = ( 231.67 722.6314560 0. ) + BODY505_LONG_AXIS = ( 0. ) + + BODY505_NUT_PREC_RA = ( -0.84 0. 0. 0. 0. 0. 0. 0. 0.01 0. ) + BODY505_NUT_PREC_DEC = ( -0.36 0. 0. 0. 0. 0. 0. 0. 0. 0. ) + BODY505_NUT_PREC_PM = ( 0.76 0. 0. 0. 0. 0. 0. 0. -0.01 0. ) + + \begintext + + + Thebe + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY514_POLE_RA = ( 268.05 -0.009 0. ) + BODY514_POLE_DEC = ( 64.49 0.003 0. ) + BODY514_PM = ( 8.56 533.7004100 0. ) + BODY514_LONG_AXIS = ( 0. ) + + BODY514_NUT_PREC_RA = ( 0. -2.11 0. 0. 0. 0. 0. 0. 0. 0.04 ) + BODY514_NUT_PREC_DEC = ( 0. -0.91 0. 0. 0. 0. 0. 0. 0. 0.01 ) + BODY514_NUT_PREC_PM = ( 0. 1.91 0. 0. 0. 0. 0. 0. 0. -0.04 ) + + \begintext + + + Adrastea + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + + + BODY515_POLE_RA = ( 268.05 -0.009 0. ) + BODY515_POLE_DEC = ( 64.49 0.003 0. ) + BODY515_PM = ( 33.29 1206.9986602 0. ) + BODY515_LONG_AXIS = ( 0. ) + + \begintext + + + Metis + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY516_POLE_RA = ( 268.05 -0.009 0. ) + BODY516_POLE_DEC = ( 64.49 0.003 0. ) + BODY516_PM = ( 346.09 1221.2547301 0. ) + BODY516_LONG_AXIS = ( 0. ) + + \begintext + + + +Satellites of Saturn + + + Mimas + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY601_POLE_RA = ( 40.66 -0.036 0. ) + BODY601_POLE_DEC = ( 83.52 -0.004 0. ) + BODY601_PM = ( 337.46 381.9945550 0. ) + BODY601_LONG_AXIS = ( 0. ) + + BODY601_NUT_PREC_RA = ( 0. 0. 13.56 0. 0. 0. 0. 0. 0. ) + BODY601_NUT_PREC_DEC = ( 0. 0. -1.53 0. 0. 0. 0. 0. 0. ) + BODY601_NUT_PREC_PM = ( 0. 0. -13.48 0. -44.85 0. 0. 0. 0. ) + + \begintext + + + Enceladus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY602_POLE_RA = ( 40.66 -0.036 0. ) + BODY602_POLE_DEC = ( 83.52 -0.004 0. ) + BODY602_PM = ( 2.82 262.7318996 0. ) + BODY602_LONG_AXIS = ( 0. ) + + \begintext + + + + Tethys + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY603_POLE_RA = ( 40.66 -0.036 0. ) + BODY603_POLE_DEC = ( 83.52 -0.004 0. ) + BODY603_PM = ( 10.45 190.6979085 0. ) + BODY603_LONG_AXIS = ( 0. ) + + BODY603_NUT_PREC_RA = ( 0. 0. 0. 9.66 0. 0. 0. 0. 0. ) + BODY603_NUT_PREC_DEC = ( 0. 0. 0. -1.09 0. 0. 0. 0. 0. ) + BODY603_NUT_PREC_PM = ( 0. 0. 0. -9.60 2.23 0. 0. 0. 0. ) + + \begintext + + + Dione + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY604_POLE_RA = ( 40.66 -0.036 0. ) + BODY604_POLE_DEC = ( 83.52 -0.004 0. ) + BODY604_PM = ( 357.00 131.5349316 0. ) + BODY604_LONG_AXIS = ( 0. ) + + \begintext + + + + Rhea + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY605_POLE_RA = ( 40.38 -0.036 0. ) + BODY605_POLE_DEC = ( 83.55 -0.004 0. ) + BODY605_PM = ( 235.16 79.6900478 0. ) + BODY605_LONG_AXIS = ( 0. ) + + BODY605_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 3.10 0. 0. 0. ) + BODY605_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. -0.35 0. 0. 0. ) + BODY605_NUT_PREC_PM = ( 0. 0. 0. 0. 0. -3.08 0. 0. 0. ) + + \begintext + + + + Titan + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY606_POLE_RA = ( 36.41 -0.036 0. ) + BODY606_POLE_DEC = ( 83.94 -0.004 0. ) + BODY606_PM = ( 189.64 22.5769768 0. ) + BODY606_LONG_AXIS = ( 0. ) + + BODY606_NUT_PREC_RA = ( 0. 0. 0. 0. 0. 0. 2.66 0. 0 ) + BODY606_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. 0. -0.30 0. 0 ) + BODY606_NUT_PREC_PM = ( 0. 0. 0. 0. 0. 0. -2.64 0. 0 ) + + \begintext + + + + Hyperion + + The IAU report does not give an orientation model for Hyperion. + Hyperion's rotation is in chaotic and is not predictable for + long periods. + + + Iapetus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY608_POLE_RA = ( 318.16 -3.949 0. ) + BODY608_POLE_DEC = ( 75.03 -1.143 0. ) + BODY608_PM = ( 350.20 4.5379572 0. ) + BODY608_LONG_AXIS = ( 0. ) + + \begintext + + + + Phoebe + + + Old values: + + Values are from the 2003 IAU report. + + body609_pole_ra = ( 355.00 0. 0. ) + body609_pole_dec = ( 68.70 0. 0. ) + body609_pm = ( 304.70 930.8338720 0. ) + body609_long_axis = ( 0. ) + + Current values: + + \begindata + + BODY609_POLE_RA = ( 356.90 0. 0. ) + BODY609_POLE_DEC = ( 77.80 0. 0. ) + BODY609_PM = ( 178.58 931.639 0. ) + BODY609_LONG_AXIS = ( 0. ) + + \begintext + + + Janus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY610_POLE_RA = ( 40.58 -0.036 0. ) + BODY610_POLE_DEC = ( 83.52 -0.004 0. ) + BODY610_PM = ( 58.83 518.2359876 0. ) + BODY610_LONG_AXIS = ( 0. ) + + BODY610_NUT_PREC_RA = ( 0. -1.623 0. 0. 0. 0. 0. 0. 0.023 ) + BODY610_NUT_PREC_DEC = ( 0. -0.183 0. 0. 0. 0. 0. 0. 0.001 ) + BODY610_NUT_PREC_PM = ( 0. 1.613 0. 0. 0. 0. 0. 0. -0.023 ) + + \begintext + + + + Epimetheus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY611_POLE_RA = ( 40.58 -0.036 0. ) + BODY611_POLE_DEC = ( 83.52 -0.004 0. ) + BODY611_PM = ( 293.87 518.4907239 0. ) + BODY611_LONG_AXIS = ( 0. ) + + BODY611_NUT_PREC_RA = ( -3.153 0. 0. 0. 0. 0. 0. 0.086 0. ) + BODY611_NUT_PREC_DEC = ( -0.356 0. 0. 0. 0. 0. 0. 0.005 0. ) + BODY611_NUT_PREC_PM = ( 3.133 0. 0. 0. 0. 0. 0. -0.086 0. ) + + \begintext + + + + Helene + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY612_POLE_RA = ( 40.85 -0.036 0. ) + BODY612_POLE_DEC = ( 83.34 -0.004 0. ) + BODY612_PM = ( 245.12 131.6174056 0. ) + BODY612_LONG_AXIS = ( 0. ) + + \begintext + + + + Telesto + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY613_POLE_RA = ( 50.51 -0.036 0. ) + BODY613_POLE_DEC = ( 84.06 -0.004 0. ) + BODY613_PM = ( 56.88 190.6979332 0. ) + BODY613_LONG_AXIS = ( 0. ) + + \begintext + + + + Calypso + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY614_POLE_RA = ( 36.41 -0.036 0. ) + BODY614_POLE_DEC = ( 85.04 -0.004 0. ) + BODY614_PM = ( 153.51 190.6742373 0. ) + BODY614_LONG_AXIS = ( 0. ) + + \begintext + + + + Atlas + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY615_POLE_RA = ( 40.58 -0.036 0. ) + BODY615_POLE_DEC = ( 83.53 -0.004 0. ) + BODY615_PM = ( 137.88 598.3060000 0. ) + BODY615_LONG_AXIS = ( 0. ) + + \begintext + + + + Prometheus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY616_POLE_RA = ( 40.58 -0.036 ) + BODY616_POLE_DEC = ( 83.53 -0.004 ) + BODY616_PM = ( 296.14 587.289000 ) + BODY616_LONG_AXIS = ( 0. ) + + \begintext + + + + Pandora + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY617_POLE_RA = ( 40.58 -0.036 0. ) + BODY617_POLE_DEC = ( 83.53 -0.004 0. ) + BODY617_PM = ( 162.92 572.7891000 0. ) + BODY617_LONG_AXIS = ( 0. ) + + \begintext + + + + Pan + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY618_POLE_RA = ( 40.6 -0.036 0. ) + BODY618_POLE_DEC = ( 83.5 -0.004 0. ) + BODY618_PM = ( 48.8 626.0440000 0. ) + BODY618_LONG_AXIS = ( 0. ) + + \begintext + + + + + +Satellites of Uranus + + + + Ariel + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY701_POLE_RA = ( 257.43 0. 0. ) + BODY701_POLE_DEC = ( -15.10 0. 0. ) + BODY701_PM = ( 156.22 -142.8356681 0. ) + BODY701_LONG_AXIS = ( 0. ) + + BODY701_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0.29 ) + + BODY701_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0.28 ) + + BODY701_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0.05 0.08 ) + \begintext + + + + Umbriel + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY702_POLE_RA = ( 257.43 0. 0. ) + BODY702_POLE_DEC = ( -15.10 0. 0. ) + BODY702_PM = ( 108.05 -86.8688923 0. ) + BODY702_LONG_AXIS = ( 0. ) + + BODY702_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0.21 ) + + BODY702_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0.20 ) + + BODY702_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. -0.09 0. 0.06 ) + + \begintext + + + + Titania + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY703_POLE_RA = ( 257.43 0. 0. ) + BODY703_POLE_DEC = ( -15.10 0. 0. ) + BODY703_PM = ( 77.74 -41.3514316 0. ) + BODY703_LONG_AXIS = ( 0. ) + + BODY703_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.29 ) + + BODY703_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.28 ) + + BODY703_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.08 ) + \begintext + + + + Oberon + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY704_POLE_RA = ( 257.43 0. 0. ) + BODY704_POLE_DEC = ( -15.10 0. 0. ) + BODY704_PM = ( 6.77 -26.7394932 0. ) + BODY704_LONG_AXIS = ( 0. ) + + + BODY704_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0.16 ) + + BODY704_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0.16 ) + + BODY704_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0.04 ) + \begintext + + + + Miranda + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + + BODY705_POLE_RA = ( 257.43 0. 0. ) + BODY705_POLE_DEC = ( -15.08 0. 0. ) + BODY705_PM = ( 30.70 -254.6906892 0. ) + BODY705_LONG_AXIS = ( 0. ) + + BODY705_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 4.41 0. 0. 0. 0. + 0. -0.04 0. ) + + BODY705_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 4.25 0. 0. 0. 0. + 0. -0.02 0. ) + + BODY705_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 1.15 -1.27 0. 0. 0. + 0. -0.09 0.15 ) + \begintext + + + + Cordelia + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY706_POLE_RA = ( 257.31 0. 0. ) + BODY706_POLE_DEC = ( -15.18 0. 0. ) + BODY706_PM = ( 127.69 -1074.5205730 0. ) + BODY706_LONG_AXIS = ( 0. ) + + BODY706_NUT_PREC_RA = ( -0.15 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY706_NUT_PREC_DEC = ( 0.14 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY706_NUT_PREC_PM = ( -0.04 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Ophelia + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY707_POLE_RA = ( 257.31 0. 0. ) + BODY707_POLE_DEC = ( -15.18 0. 0. ) + BODY707_PM = ( 130.35 -956.4068150 0. ) + BODY707_LONG_AXIS = ( 0. ) + + BODY707_NUT_PREC_RA = ( 0. -0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY707_NUT_PREC_DEC = ( 0. 0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY707_NUT_PREC_PM = ( 0. -0.03 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Bianca + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY708_POLE_RA = ( 257.31 0. 0. ) + BODY708_POLE_DEC = ( -15.18 0. 0. ) + BODY708_PM = ( 105.46 -828.3914760 0. ) + BODY708_LONG_AXIS = ( 0. ) + + BODY708_NUT_PREC_RA = ( 0. 0. -0.16 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY708_NUT_PREC_DEC = ( 0. 0. 0.16 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY708_NUT_PREC_PM = ( 0. 0. -0.04 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Cressida + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + + BODY709_POLE_RA = ( 257.31 0. 0. ) + BODY709_POLE_DEC = ( -15.18 0. 0. ) + BODY709_PM = ( 59.16 -776.5816320 0. ) + BODY709_LONG_AXIS = ( 0. ) + + + BODY709_NUT_PREC_RA = ( 0. 0. 0. -0.04 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + + BODY709_NUT_PREC_DEC = ( 0. 0. 0. 0.04 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + + BODY709_NUT_PREC_PM = ( 0. 0. 0. -0.01 0. + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + + \begintext + + + + Desdemona + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY710_POLE_RA = ( 257.31 0. 0. ) + BODY710_POLE_DEC = ( -15.18 0. 0. ) + BODY710_PM = ( 95.08 -760.0531690 0. ) + BODY710_LONG_AXIS = ( 0. ) + + BODY710_NUT_PREC_RA = ( 0. 0. 0. 0. -0.17 + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY710_NUT_PREC_DEC = ( 0. 0. 0. 0. 0.16 + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY710_NUT_PREC_PM = ( 0. 0. 0. 0. -0.04 + 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Juliet + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY711_POLE_RA = ( 257.31 0. 0. ) + BODY711_POLE_DEC = ( -15.18 0. 0. ) + BODY711_PM = ( 302.56 -730.1253660 0. ) + BODY711_LONG_AXIS = ( 0. ) + + BODY711_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + -0.06 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY711_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0.06 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY711_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + -0.02 0. 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Portia + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY712_POLE_RA = ( 257.31 0. 0. ) + BODY712_POLE_DEC = ( -15.18 0. 0. ) + BODY712_PM = ( 25.03 -701.4865870 0. ) + BODY712_LONG_AXIS = ( 0. ) + + BODY712_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. -0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY712_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0.09 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY712_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. -0.02 0. 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Rosalind + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY713_POLE_RA = ( 257.31 0. 0. ) + BODY713_POLE_DEC = ( -15.18 0. 0. ) + BODY713_PM = ( 314.90 -644.6311260 0. ) + BODY713_LONG_AXIS = ( 0. ) + + BODY713_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. -0.29 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY713_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0.28 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY713_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. -0.08 0. 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + Belinda + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY714_POLE_RA = ( 257.31 0. 0. ) + BODY714_POLE_DEC = ( -15.18 0. 0. ) + BODY714_PM = ( 297.46 -577.3628170 0. ) + BODY714_LONG_AXIS = ( 0. ) + + BODY714_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. -0.03 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY714_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0.03 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY714_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. -0.01 0. + 0. 0. 0. 0. 0. + 0. 0. 0. ) + \begintext + + + + Puck + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY715_POLE_RA = ( 257.31 0. 0. ) + BODY715_POLE_DEC = ( -15.18 0. 0. ) + BODY715_PM = ( 91.24 -472.5450690 0. ) + BODY715_LONG_AXIS = ( 0. ) + + BODY715_NUT_PREC_RA = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. -0.33 + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY715_NUT_PREC_DEC = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0.31 + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + BODY715_NUT_PREC_PM = ( 0. 0. 0. 0. 0. + 0. 0. 0. 0. -0.09 + 0. 0. 0. 0. 0. + 0. 0. 0. ) + + \begintext + + + + +Satellites of Neptune + + + Triton + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY801_POLE_RA = ( 299.36 0. 0. ) + BODY801_POLE_DEC = ( 41.17 0. 0. ) + BODY801_PM = ( 296.53 -61.2572637 0. ) + BODY801_LONG_AXIS = ( 0. ) + + + BODY801_NUT_PREC_RA = ( 0. 0. 0. 0. + 0. 0. 0. -32.35 + 0. -6.28 -2.08 -0.74 + -0.28 -0.11 -0.07 -0.02 + -0.01 ) + + + BODY801_NUT_PREC_DEC = ( 0. 0. 0. 0. + 0. 0. 0. 22.55 + 0. 2.10 0.55 0.16 + 0.05 0.02 0.01 0. + 0. ) + + + BODY801_NUT_PREC_PM = ( 0. 0. 0. 0. + 0. 0. 0. 22.25 + 0. 6.73 2.05 0.74 + 0.28 0.11 0.05 0.02 + 0.01 ) + + \begintext + + + + + Nereid + + Old values: + + Values are from the 1988 IAU report [10]. Note that this + rotation model pre-dated the 1989 Voyager 2 Neptune + encounter. + + + body802_pole_ra = ( 273.48 0. 0. ) + body802_pole_dec = ( 67.22 0. 0. ) + body802_pm = ( 237.22 0.9996465 0. ) + body802_long_axis = ( 0. ) + + + The report seems to have a typo: in the nut_prec_ra expression, + where the report gives -0.51 sin 3N3, we use -0.51 3N2. + + body802_nut_prec_ra = ( 0. -17.81 + 0. 0. 0. 0. + 0. 0. 0. + 2.56 -0.51 0.11 -0.03 ) + + body802_nut_prec_dec = ( 0. -6.67 + 0. 0. 0. 0. + 0. 0. 0. + 0.47 -0.07 0.01 ) + + body802_nut_prec_pm = ( 0. 16.48 + 0. 0. 0. 0. + 0. 0. 0. + -2.57 0.51 -0.11 0.02 ) + + + + Current values: + + The 2006 report [1] states that values for Nereid are not + given because Nereid is not in synchronous rotation with Neptune + (p. 167). + + + + Naiad + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY803_POLE_RA = ( 299.36 0. 0. ) + BODY803_POLE_DEC = ( 43.36 0. 0. ) + BODY803_PM = ( 254.06 +1222.8441209 0. ) + BODY803_LONG_AXIS = ( 0. ) + + + BODY803_NUT_PREC_RA = ( 0.70 -6.49 0. 0. + 0. 0. 0. 0. + 0.25 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY803_NUT_PREC_DEC = ( -0.51 -4.75 0. 0. + 0. 0. 0. 0. + 0.09 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY803_NUT_PREC_PM = ( -0.48 4.40 0. 0. + 0. 0. 0. 0. + -0.27 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + \begintext + + + + + Thalassa + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY804_POLE_RA = ( 299.36 0. 0. ) + BODY804_POLE_DEC = ( 43.45 0. 0. ) + BODY804_PM = ( 102.06 1155.7555612 0. ) + BODY804_LONG_AXIS = ( 0. ) + + + BODY804_NUT_PREC_RA = ( 0.70 0. -0.28 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + + BODY804_NUT_PREC_DEC = ( -0.51 0. -0.21 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY804_NUT_PREC_PM = ( -0.48 0. 0.19 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + \begintext + + + + Despina + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY805_POLE_RA = ( 299.36 0. 0. ) + BODY805_POLE_DEC = ( 43.45 0. 0. ) + BODY805_PM = ( 306.51 +1075.7341562 0. ) + BODY805_LONG_AXIS = ( 0. ) + + + BODY805_NUT_PREC_RA = ( 0.70 0. 0. -0.09 + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY805_NUT_PREC_DEC = ( -0.51 0. 0. -0.07 + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY805_NUT_PREC_PM = ( -0.49 0. 0. 0.06 + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + \begintext + + + + Galatea + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY806_POLE_RA = ( 299.36 0. 0. ) + BODY806_POLE_DEC = ( 43.43 0. 0. ) + BODY806_PM = ( 258.09 839.6597686 0. ) + BODY806_LONG_AXIS = ( 0. ) + + + BODY806_NUT_PREC_RA = ( 0.70 0. 0. 0. + -0.07 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY806_NUT_PREC_DEC = ( -0.51 0. 0. 0. + -0.05 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY806_NUT_PREC_PM = ( -0.48 0. 0. 0. + 0.05 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + \begintext + + + Larissa + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY807_POLE_RA = ( 299.36 0. 0. ) + BODY807_POLE_DEC = ( 43.41 0. 0. ) + BODY807_PM = ( 179.41 +649.0534470 0. ) + BODY807_LONG_AXIS = ( 0. ) + + + BODY807_NUT_PREC_RA = ( 0.70 0. 0. 0. + 0. -0.27 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY807_NUT_PREC_DEC = ( -0.51 0. 0. 0. + 0. -0.20 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY807_NUT_PREC_PM = ( -0.48 0. 0. 0. + 0. 0.19 0. 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + \begintext + + + + Proteus + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY808_POLE_RA = ( 299.27 0. 0. ) + BODY808_POLE_DEC = ( 42.91 0. 0. ) + BODY808_PM = ( 93.38 +320.7654228 0. ) + BODY808_LONG_AXIS = ( 0. ) + + + BODY808_NUT_PREC_RA = ( 0.70 0. 0. 0. + 0. 0. -0.05 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY808_NUT_PREC_DEC = ( -0.51 0. 0. 0. + 0. 0. -0.04 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + BODY808_NUT_PREC_PM = ( -0.48 0. 0. 0. + 0. 0. 0.04 0. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. ) + + \begintext + + + + + +Satellites of Pluto + + Charon + + Old values: + + Values are from the 2003 IAU report. + + body901_pole_ra = ( 313.02 0. 0. ) + body901_pole_dec = ( 9.09 0. 0. ) + body901_pm = ( 56.77 -56.3623195 0. ) + body901_long_axis = ( 0. ) + + Current values: + + \begindata + + BODY901_POLE_RA = ( 312.993 0. 0. ) + BODY901_POLE_DEC = ( 6.163 0. 0. ) + BODY901_PM = ( 57.305 -56.3625225 0. ) + BODY901_LONG_AXIS = ( 0. ) + + \begintext + + + +Orientation constants for Selected Comets and Asteroids +-------------------------------------------------------- + + + +19P/Borrelly + + + Current values: + + \begindata + + BODY1000005_POLE_RA = ( 218.5 0. 0. ) + BODY1000005_POLE_DEC = ( -12.5 0. 0. ) + BODY1000005_PM = ( 000. 390.0 0. ) + BODY1000005_LONG_AXIS = ( 0. ) + + \begintext + + + +9P/Tempel 1 + + + Current values: + + \begindata + + BODY1000093_POLE_RA = ( 294. 0. 0. ) + BODY1000093_POLE_DEC = ( 73. 0. 0. ) + BODY1000093_PM = ( 252.63 212.064 0. ) + BODY1000093_LONG_AXIS = ( 0. ) + + \begintext + + +Vesta + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY2000004_POLE_RA = ( 301. 0. 0. ) + BODY2000004_POLE_DEC = ( 41. 0. 0. ) + BODY2000004_PM = ( 292. 1617.332776 0. ) + BODY2000004_LONG_AXIS = ( 0. ) + + \begintext + +Eros + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY2000433_POLE_RA = ( 11.35 0. 0. ) + BODY2000433_POLE_DEC = ( 17.22 0. 0. ) + BODY2000433_PM = ( 326.07 1639.38864745 0. ) + BODY2000433_LONG_AXIS = ( 0. ) + + \begintext + + +Itokawa + + + Current values: + + \begindata + + BODY2025143_POLE_RA = ( 90.53 0. 0. ) + BODY2025143_POLE_DEC = ( -66.30 0. 0. ) + BODY2025143_PM = ( 000.0 712.143 0. ) + BODY2025143_LONG_AXIS = ( 0. ) + + \begintext + + + +Ida + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY2431010_POLE_RA = ( 168.76 0. 0. ) + BODY2431010_POLE_DEC = ( -2.88 0. 0. ) + BODY2431010_PM = ( 265.95 +1864.6280070 0. ) + BODY2431010_LONG_AXIS = ( 0. ) + + \begintext + +Gaspra + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY9511010_POLE_RA = ( 9.47 0. 0. ) + BODY9511010_POLE_DEC = ( 26.70 0. 0. ) + BODY9511010_PM = ( 83.67 1226.9114850 0. ) + BODY9511010_LONG_AXIS = ( 0. ) + + \begintext + + + + + + + + + + +Radii of Sun and Planets +-------------------------------------------------------- + + +Sun + + Value for the Sun is from the [3], page K7. + + \begindata + + BODY10_RADII = ( 696000. 696000. 696000. ) + + \begintext + + +Mercury + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY199_RADII = ( 2439.7 2439.7 2439.7 ) + + \begintext + + +Venus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY299_RADII = ( 6051.8 6051.8 6051.8 ) + + \begintext + + +Earth + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + + \begindata + + BODY399_RADII = ( 6378.14 6378.14 6356.75 ) + + \begintext + + +Mars + + + Old values: + + body499_radii = ( 3397. 3397. 3375. ) + + Current values: + + + The IAU report gives separate values for the north and south + polar radii: + + north: 3373.19 + south: 3379.21 + + We use the average of these values as the polar radius for + the triaxial model. + + \begindata + + BODY499_RADII = ( 3396.19 3396.19 3376.20 ) + + \begintext + + + +Jupiter + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY599_RADII = ( 71492 71492 66854 ) + + \begintext + + + +Saturn + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY699_RADII = ( 60268 60268 54364 ) + + \begintext + + + +Uranus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY799_RADII = ( 25559 25559 24973 ) + + \begintext + + + +Neptune + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + (Values are for the 1 bar pressure level.) + + \begindata + + BODY899_RADII = ( 24764 24764 24341 ) + + \begintext + + + +Pluto + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY999_RADII = ( 1195 1195 1195 ) + + \begintext + + + + +Radii of Satellites +-------------------------------------------------------- + + +Moon + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY301_RADII = ( 1737.4 1737.4 1737.4 ) + + \begintext + + + +Satellites of Mars + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY401_RADII = ( 13.4 11.2 9.2 ) + BODY402_RADII = ( 7.5 6.1 5.2 ) + + \begintext + + + +Satellites of Jupiter + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY501_RADII = ( 1829.4 1819.3 1815.7 ) + BODY502_RADII = ( 1564.13 1561.23 1560.93 ) + BODY503_RADII = ( 2632.4 2632.29 2632.35 ) + BODY504_RADII = ( 2409.4 2409.2 2409.3 ) + BODY505_RADII = ( 125 73 64 ) + + \begintext + + Only mean radii are available in the 2003 IAU report for bodies + 506-513. + + \begindata + + BODY506_RADII = ( 85 85 85 ) + BODY507_RADII = ( 40 40 40 ) + BODY508_RADII = ( 18 18 18 ) + BODY509_RADII = ( 14 14 14 ) + BODY510_RADII = ( 12 12 12 ) + BODY511_RADII = ( 15 15 15 ) + BODY512_RADII = ( 10 10 10 ) + BODY513_RADII = ( 5 5 5 ) + BODY514_RADII = ( 58 49 42 ) + BODY515_RADII = ( 10 8 7 ) + + \begintext + + The value for the second radius for body 516 is not given in + 2003 IAU report. The values given are: + + BODY516_RADII = ( 30 --- 20 ) + + For use within the SPICE system, we use only the mean radius. + \begindata + + BODY516_RADII = ( 21.5 21.5 21.5 ) + + \begintext + + + +Satellites of Saturn + + + Old values: + + Values are from the 2003 IAU report. + + body601_radii = ( 209.1 196.2 191.4 ) + body602_radii = ( 256.3 247.3 244.6 ) + body603_radii = ( 535.6 528.2 525.8 ) + body604_radii = ( 560 560 560 ) + body605_radii = ( 764 764 764 ) + body606_radii = ( 2575 2575 2575 ) + body607_radii = ( 164 130 107 ) + body608_radii = ( 718 718 718 ) + body609_radii = ( 115 110 105 ) + body610_radii = ( 97.0 95.0 77.0 ) + body611_radii = ( 69.0 55.0 55.0 ) + + + Only the first equatorial radius for Helene (body 612) was given in the + 2003 IAU report: + + body612_radii = ( 17.5 --- --- ) + + The mean radius was 16km; we used this radius for all three axes, as + we do for the satellites for which only the mean radius is available. + + + body612_radii = ( 16 16 16 ) + body613_radii = ( 15 12.5 7.5 ) + body614_radii = ( 15.0 8.0 8.0 ) + body615_radii = ( 18.5 17.2 13.5 ) + body616_radii = ( 74.0 50.0 34.0 ) + body617_radii = ( 55.0 44.0 31.0 ) + + + + Current values: + + \begindata + + BODY601_RADII = ( 207.4 196.8 190.6 ) + BODY602_RADII = ( 256.6 251.4 248.3 ) + BODY603_RADII = ( 540.4 531.1 527.5 ) + BODY604_RADII = ( 563.8 561.0 560.3 ) + BODY605_RADII = ( 767.2 762.5 763.1 ) + BODY606_RADII = ( 2575 2575 2575 ) + BODY607_RADII = ( 164 130 107 ) + BODY608_RADII = ( 747.4 747.4 712.4 ) + BODY609_RADII = ( 108.6 107.7 101.5 ) + BODY610_RADII = ( 97.0 95.0 77.0 ) + BODY611_RADII = ( 69.0 55.0 55.0 ) + + \begintext + + Only the first equatorial radius for Helene (body 612) is given in the + 2006 IAU report: + + BODY612_RADII = ( 17.5 --- --- ) + + The mean radius is 16km; we use this radius for all three axes, as + we do for the satellites for which only the mean radius is available. + + + \begindata + + BODY612_RADII = ( 17.5 17.5 17.5 ) + BODY613_RADII = ( 15 12.5 7.5 ) + BODY614_RADII = ( 15.0 8.0 8.0 ) + BODY615_RADII = ( 18.5 17.2 13.5 ) + BODY616_RADII = ( 74.0 50.0 34.0 ) + BODY617_RADII = ( 55.0 44.0 31.0 ) + + \begintext + + + For Pan, only a mean radius is given in the 2006 report. + + \begindata + + BODY618_RADII = ( 10 10 10 ) + + \begintext + + + +Satellites of Uranus + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + \begindata + + BODY701_RADII = ( 581.1 577.9 577.7 ) + BODY702_RADII = ( 584.7 584.7 584.7 ) + BODY703_RADII = ( 788.9 788.9 788.9 ) + BODY704_RADII = ( 761.4 761.4 761.4 ) + BODY705_RADII = ( 240.4 234.2 232.9 ) + + \begintext + + The 2000 report gives only mean radii for satellites 706--715. + + \begindata + + BODY706_RADII = ( 13 13 13 ) + BODY707_RADII = ( 15 15 15 ) + BODY708_RADII = ( 21 21 21 ) + BODY709_RADII = ( 31 31 31 ) + BODY710_RADII = ( 27 27 27 ) + BODY711_RADII = ( 42 42 42 ) + BODY712_RADII = ( 54 54 54 ) + BODY713_RADII = ( 27 27 27 ) + BODY714_RADII = ( 33 33 33 ) + BODY715_RADII = ( 77 77 77 ) + + \begintext + + + + +Satellites of Neptune + + + Old values: + + Values are unchanged in the 2006 IAU report. + + Current values: + + The 2000 report gives mean radii only for bodies 801-806. + + \begindata + + BODY801_RADII = ( 1352.6 1352.6 1352.6 ) + BODY802_RADII = ( 170 170 170 ) + BODY803_RADII = ( 29 29 29 ) + BODY804_RADII = ( 40 40 40 ) + BODY805_RADII = ( 74 74 74 ) + BODY806_RADII = ( 79 79 79 ) + + \begintext + + + The second equatorial radius for Larissa is not given in the 2000 + report. The available values are: + + BODY807_RADII = ( 104 --- 89 ) + + For use within the SPICE system, we use only the mean radius. + \begindata + + BODY807_RADII = ( 96 96 96 ) + BODY808_RADII = ( 218 208 201 ) + + \begintext + + + + +Satellites of Pluto + + + Old values: + + Values are from the 2003 IAU report. + + BODY901_RADII = ( 593 593 593 ) + + Current values: + + \begindata + + BODY901_RADII = ( 605 605 605 ) + + \begintext + + + +Radii for Selected Comets and Asteroids +-------------------------------------------------------- + + +19P/Borrelly + + + Current values: + + + The value in the data assignment below is the + "effective radius." + + The first principal axis length is + + 3.5 km + + The lengths of the other semi-axes are not provided + by [1]. + + \begindata + + BODY1000005_RADII = ( 4.22 4.22 4.22 ) + + \begintext + + + +Halley + + + Current values: + + \begindata + + BODY1000036_RADII = ( 8.0 4.0 4.0 ) + + \begintext + + + +9P/Tempel 1 + + + Current values: + + + The value in the data assignment below is the + "effective radius." + + According to [1]: + + The maximum and minimum radii are not properly + the values of the principal semi-axes, they + are half the maximum and minimum values of the + diameter. Due to the large deviations from a + simple ellipsoid, they may not correspond with + measurements along the principal axes, or be + orthogonal to each other. + + \begindata + + BODY1000093_RADII = ( 3.0 3.0 3.0 ) + + \begintext + + +81P/Wild 2 + + + Current values: + + + \begindata + + BODY1000107_RADII = ( 2.7 1.9 1.5 ) + + \begintext + + +Ceres + + + Current values: + + + \begindata + + BODY2000001_RADII = ( 487.3 487.3 454.7 ) + + \begintext + + +Vesta + + + Current values: + + + \begindata + + BODY2000004_RADII = ( 289. 280. 229. ) + + \begintext + + +Toutatis + + + Current values: + + + \begindata + + BODY2004179_RADII = ( 2.13 1.015 0.85 ) + + \begintext + + +Kleopatra + + + Old values: + + Values are from the 2003 report. + + + body2000216_radii = ( 108.5 47 40.5 ) + + + Current values: + + + No values are provided in the 2006 report. + + +Mathilde + + + Current values: + + + \begindata + + BODY2000253_RADII = ( 33. 24. 23. ) + + \begintext + +Eros + + + Current values: + + + \begindata + + BODY2000433_RADII = ( 17.0 5.5 5.5 ) + + \begintext + + +Itokawa + + + Current values: + + + \begindata + + BODY2025143_RADII = ( 0.535 0.294 0.209 ) + + \begintext + + + +Gaspra + + + Current values: + + + \begindata + + BODY9511010_RADII = ( 9.1 5.2 4.4 ) + + \begintext + + + + +Ida + + + Current values: + + + \begindata + + BODY2431010_RADII = ( 26.8 12.0 7.6 ) + + \begintext + + + +=========================================================================== +End of file pck00009.tpc +=========================================================================== + + + diff --git a/tests/pytests/data/LUA3107H.161/uvvisAddendum004.ti b/tests/pytests/data/LUA3107H.161/uvvisAddendum004.ti new file mode 100644 index 000000000..8c74fa87c --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/uvvisAddendum004.ti @@ -0,0 +1,91 @@ +\begintext +history ????-??-?? - v01 - Original version +history ????-??-?? - v02 - Removed camera orientation information (added to fk) +history ????-??-?? - v03 - Added reference frame information for producing CKs in ISIS +history 2018—09-14 - v04 - Emerson Speyerer - Added filter dependent frames; transferred camera model information out of the IAK and created an traditional IK for the UVVIS camera + + +\begindata +INS-40021_PLATFORM_ID = -40000 +INS-40022_PLATFORM_ID = -40000 +INS-40023_PLATFORM_ID = -40000 +INS-40024_PLATFORM_ID = -40000 +INS-40025_PLATFORM_ID = -40000 +INS-40026_PLATFORM_ID = -40000 + +INS-40021_SPK_TIME_BIAS = 0.0 +INS-40021_CK_TIME_BIAS = 0.0 +INS-40021_CK_TIME_TOLERANCE = 1 + +INS-40022_SPK_TIME_BIAS = 0.0 +INS-40022_CK_TIME_BIAS = 0.0 +INS-40022_CK_TIME_TOLERANCE = 1 + +INS-40023_SPK_TIME_BIAS = 0.0 +INS-40023_CK_TIME_BIAS = 0.0 +INS-40023_CK_TIME_TOLERANCE = 1 + +INS-40024_SPK_TIME_BIAS = 0.0 +INS-40024_CK_TIME_BIAS = 0.0 +INS-40024_CK_TIME_TOLERANCE = 1 + +INS-40025_SPK_TIME_BIAS = 0.0 +INS-40025_CK_TIME_BIAS = 0.0 +INS-40025_CK_TIME_TOLERANCE = 1 + +INS-40026_SPK_TIME_BIAS = 0.0 +INS-40026_CK_TIME_BIAS = 0.0 +INS-40026_CK_TIME_TOLERANCE = 1 + +\begintext +These are the parameters required for writing c-kernels. Isis will +create ck with the same frame endpoints as the mission ck. For +the Clementine spacecraft the ck frame is CLEM_SC_BUS (-40000), and the +ck reference frame is J2000 (1). + +\begindata + +INS-40021_CK_FRAME_ID=-40002 +INS-40021_CK_REFERENCE_ID=-40000 + +INS-40022_CK_FRAME_ID=-40002 +INS-40022_CK_REFERENCE_ID=-40000 + +INS-40023_CK_FRAME_ID=-40002 +INS-40023_CK_REFERENCE_ID=-40000 + +INS-40024_CK_FRAME_ID=-40002 +INS-40024_CK_REFERENCE_ID=-40000 + +INS-40025_CK_FRAME_ID=-40002 +INS-40025_CK_REFERENCE_ID=-40000 + +INS-40026_CK_FRAME_ID=-40002 +INS-40026_CK_REFERENCE_ID=-40000 + +INS-40021_SWAP_OBSERVER_TARGET = 'TRUE' +INS-40021_LIGHTTIME_CORRECTION = 'NONE' +INS-40021_LT_SURFACE_CORRECT = 'TRUE' + +INS-40022_SWAP_OBSERVER_TARGET = 'TRUE' +INS-40022_LIGHTTIME_CORRECTION = 'NONE' +INS-40022_LT_SURFACE_CORRECT = 'TRUE' + +INS-40023_SWAP_OBSERVER_TARGET = 'TRUE' +INS-40023_LIGHTTIME_CORRECTION = 'NONE' +INS-40023_LT_SURFACE_CORRECT = 'TRUE' + +INS-40024_SWAP_OBSERVER_TARGET = 'TRUE' +INS-40024_LIGHTTIME_CORRECTION = 'NONE' +INS-40024_LT_SURFACE_CORRECT = 'TRUE' + +INS-40025_SWAP_OBSERVER_TARGET = 'TRUE' +INS-40025_LIGHTTIME_CORRECTION = 'NONE' +INS-40025_LT_SURFACE_CORRECT = 'TRUE' + +INS-40026_SWAP_OBSERVER_TARGET = 'TRUE' +INS-40026_LIGHTTIME_CORRECTION = 'NONE' +INS-40026_LT_SURFACE_CORRECT = 'TRUE' + + + diff --git a/tests/pytests/data/isds/clem_uvvis_isd.json b/tests/pytests/data/isds/clem_uvvis_isd.json new file mode 100644 index 000000000..68666f5c0 --- /dev/null +++ b/tests/pytests/data/isds/clem_uvvis_isd.json @@ -0,0 +1,340 @@ +{ + "isis_camera_version": 1, + "image_lines": 288, + "image_samples": 384, + "name_platform": "CLEMENTINE 1", + "name_sensor": "CLEM_UVVIS_A", + "reference_height": { + "maxheight": 1000, + "minheight": -1000, + "unit": "m" + }, + "name_model": "USGS_ASTRO_FRAME_SENSOR_MODEL", + "center_ephemeris_time": -182119484.4628324, + "radii": { + "semimajor": 1737.4, + "semiminor": 1737.4, + "unit": "km" + }, + "body_rotation": { + "time_dependent_frames": [ + 310002, + 1 + ], + "ck_table_start_time": -182119484.4628324, + "ck_table_end_time": -182119484.4628324, + "ck_table_original_size": 1, + "ephemeris_times": [ + -182119484.4628324 + ], + "quaternions": [ + [ + -0.96885432787622, + 0.20669697894775604, + 0.03957524503488252, + -0.13050459850065885 + ] + ], + "angular_velocities": [ + [ + 5.995309552408776e-08, + -1.0943667483827817e-06, + 2.425386964592493e-06 + ] + ], + "constant_frames": [ + 310001, + 310003, + 310000, + 310002 + ], + "constant_rotation": [ + 0.9999998785270937, + -0.00030978912711655305, + 0.00038337513559243597, + 0.00030978942161770135, + 0.9999999520150048, + -7.087975496937869e-07, + -0.0003833748976184077, + 8.275630251118771e-07, + 0.9999999265114988 + ], + "reference_frame": 1 + }, + "instrument_pointing": { + "time_dependent_frames": [ + -40000, + 1 + ], + "ck_table_start_time": -182119484.4628324, + "ck_table_end_time": -182119484.4628324, + "ck_table_original_size": 1, + "ephemeris_times": [ + -182119484.4628324 + ], + "quaternions": [ + [ + -0.7558493895743924, + 0.1793162979127797, + -0.6195142642465334, + -0.1128691365163656 + ] + ], + "angular_velocities": [ + [ + 0.00018037439261772692, + -0.0007110656713082156, + -0.00018642325246887433 + ] + ], + "reference_frame": 1, + "constant_frames": [ + -40021, + -40002, + -40000 + ], + "constant_rotation": [ + -0.006108611041259038, + -0.9999660726077593, + -0.005526165448164337, + 0.9999807939399818, + -0.00610272721183136, + -0.0010809587141711275, + 0.0010471973598032407, + -0.005532662468635599, + 0.9999841463861805 + ] + }, + "naif_keywords": { + "BODY301_RADII": [ + 1737.4, + 1737.4, + 1737.4 + ], + "BODY_FRAME_CODE": 310001, + "BODY_CODE": 301, + "INS-40021_FOV_CROSS_ANGLE": 2.1085, + "INS-40021_ITRANSL": [ + 0.0, + 0.0, + 43.47826087 + ], + "INS-40021_ITRANSS": [ + 0.0, + 43.47826087, + 0.0 + ], + "INS-40021_PP": [ + 0.0, + 0.0 + ], + "INS-40021_FOV_REF_ANGLE": 2.8115, + "INS-40021_CK_FRAME_ID": -40002.0, + "TKFRAME_-40021_RELATIVE": "CLEM_UVVIS", + "INS-40021_FOCAL_LENGTH": 89.874444, + "INS-40021_OD_K": [ + 0.0, + -2.422842e-05, + 0.0 + ], + "TKFRAME_-40021_ANGLES": [ + -0.00553269372882, + -0.0010471975512, + 1.5769049791768799 + ], + "INS-40021_FILTER_NAME": "A", + "INS-40021_FOV_CLASS_SPEC": "ANGLES", + "FRAME_-40021_CENTER": -40.0, + "INS-40021_BORESIGHT_SAMPLE": 192.5, + "INS-40021_BORESIGHT": [ + 0.0, + 0.0, + 1.0 + ], + "INS-40021_FOV_REF_VECTOR": [ + 1.0, + 0.0, + 0.0 + ], + "INS-40021_DECENTER": [ + 2.255006e-05, + 2.1089410000000002e-05 + ], + "INS-40021_FILTER_BANDCENTER": 415.0, + "INS-40021_SWAP_OBSERVER_TARGET": "TRUE", + "INS-40021_F/RATIO": -999.9999, + "INS-40021_BORESIGHT_LINE": 144.5, + "INS-40021_FOV_SHAPE": "RECTANGLE", + "INS-40021_FILTER_BANDWIDTH": 40.0, + "INS-40021_LIGHTTIME_CORRECTION": "NONE", + "INS-40021_PIXEL_LINES": 288.0, + "INS-40021_IFOV": -999.999, + "INS-40021_CK_TIME_TOLERANCE": 1.0, + "INS-40021_TRANSX": [ + 0.0, + 0.023, + 0.0 + ], + "INS-40021_TRANSY": [ + 0.0, + 0.0, + 0.023 + ], + "FRAME_-40021_CLASS": 4.0, + "INS-40021_PIXEL_SIZE": [ + 0.023, + 0.023 + ], + "INS-40021_PLATFORM_ID": -40000.0, + "INS-40021_PIXEL_SAMPLES": 384.0, + "INS-40021_CK_REFERENCE_ID": -40000.0, + "INS-40021_FOV_FRAME": "CLEM_UVVIS_A", + "INS-40021_FOV_ANGLE_UNITS": "DEGREES", + "INS-40021_LT_SURFACE_CORRECT": "TRUE", + "INS-40021_SPK_TIME_BIAS": 0.0, + "INS-40021_CCD_CENTER": [ + 512.5, + 512.5 + ], + "FRAME_-40021_NAME": "CLEM_UVVIS_A", + "TKFRAME_-40021_UNITS": "RADIANS", + "TKFRAME_-40021_AXES": [ + 1.0, + 2.0, + 3.0 + ], + "INS-40021_CK_TIME_BIAS": 0.0, + "TKFRAME_-40021_SPEC": "ANGLES", + "INS-40021_PIXEL_PITCH": 0.023, + "FRAME_-40021_CLASS_ID": -40021.0, + "BODY301_POLE_RA": [ + 269.9949, + 0.0031, + 0.0 + ], + "BODY301_NUT_PREC_PM": [ + 3.561, + 0.1208, + -0.0642, + 0.0158, + 0.0252, + -0.0066, + -0.0047, + -0.0046, + 0.0028, + 0.0052 + ], + "BODY301_NUT_PREC_RA": [ + -3.8787000000000003, + -0.1204, + 0.07, + -0.0172, + 0.0, + 0.0072, + 0.0, + 0.0, + 0.0, + -0.0052 + ], + "BODY301_LONG_AXIS": 0.0, + "BODY301_NUT_PREC_DEC": [ + 1.5419, + 0.0239, + -0.0278, + 0.0068, + 0.0, + -0.0029, + 0.0009, + 0.0, + 0.0, + 0.0008 + ], + "BODY301_POLE_DEC": [ + 66.5392, + 0.013, + 0.0 + ], + "BODY301_PM": [ + 38.3213, + 13.17635815, + -1.3999999999999999e-12 + ], + "OBJECT_301_FRAME": "LUNAR_MEAN_EARTH" + }, + "detector_sample_summing": 1, + "detector_line_summing": 1, + "focal_length_model": { + "focal_length": 89.874444 + }, + "detector_center": { + "line": 144.5, + "sample": 192.5 + }, + "focal2pixel_lines": [ + 0.0, + 0.0, + 43.47826087 + ], + "focal2pixel_samples": [ + 0.0, + 43.47826087, + 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": -182119484.4628324, + "spk_table_end_time": -182119484.4628324, + "spk_table_original_size": 1, + "ephemeris_times": [ + -182119484.4628324 + ], + "positions": [ + [ + 2161.526643750674, + 288.7562569425208, + -368.62333558477275 + ] + ], + "velocities": [ + [ + 0.49612747663310774, + -0.6539736578870095, + 1.52452216984493 + ] + ], + "reference_frame": 1 + }, + "sun_position": { + "spk_table_start_time": -182119484.4628324, + "spk_table_end_time": -182119484.4628324, + "spk_table_original_size": 1, + "ephemeris_times": [ + -182119484.4628324 + ], + "positions": [ + [ + 149015833.32233897, + 11369707.322623711, + 4963566.246318031 + ] + ], + "velocities": [ + [ + -1.6858633435768788, + 28.27644180767442, + 12.229762748807639 + ] + ], + "reference_frame": 1 + } +} \ No newline at end of file diff --git a/tests/pytests/test_clementine_drivers.py b/tests/pytests/test_clementine_drivers.py new file mode 100644 index 000000000..70f408dc7 --- /dev/null +++ b/tests/pytests/test_clementine_drivers.py @@ -0,0 +1,52 @@ +import os +import json +import unittest +from unittest.mock import PropertyMock, patch + +import pytest + +import ale +from ale.drivers.clementine_drivers import ClementineUvvisIsisLabelNaifSpiceDriver + +from conftest import get_image, get_image_kernels, get_isd, convert_kernels, get_image_label, compare_dicts + +@pytest.fixture(scope='module') +def test_uvvis_kernels(): + kernels = get_image_kernels('LUA3107H.161') + updated_kernels, binary_kernels = convert_kernels(kernels) + yield updated_kernels + for kern in binary_kernels: + os.remove(kern) + +def test_uvvis_load(test_uvvis_kernels): + label_file = get_image_label('LUA3107H.161', 'isis3') + isd_str = ale.loads(label_file, props={'kernels': test_uvvis_kernels, 'exact_ck_times': False}) + isd_obj = json.loads(isd_str) + compare_isd = get_isd('clem_uvvis') + assert compare_dicts(isd_obj, compare_isd) == [] + +# ========= Test uvvis isislabel and naifspice driver ========= +class test_uvvis_isis_naif(unittest.TestCase): + + def setUp(self): + label = get_image_label("LUA3107H.161", "isis3") + self.driver = ClementineUvvisIsisLabelNaifSpiceDriver(label) + + def test_instrument_id(self): + assert self.driver.instrument_id == "ULTRAVIOLET/VISIBLE CAMERA" + + def test_ephemeris_start_time(self): + with patch('ale.drivers.clementine_drivers.spice.utc2et', return_value=12345) as scs2e: + assert self.driver.ephemeris_start_time == 12345 + + def test_ephemeris_stop_time(self): + with patch('ale.drivers.clementine_drivers.spice.utc2et', return_value=12345) as scs2e: + assert self.driver.ephemeris_stop_time >= 12345 + + def test_spacecraft_name(self): + assert self.driver.sensor_name == "CLEM_UVVIS_A" # this is probly not correct + + def test_sensor_model_version(self): + assert self.driver.sensor_model_version == 1 + +