From 4662ce6d551a698e3473fa95a5a6e8eaaccb6b41 Mon Sep 17 00:00:00 2001 From: antonhibl Date: Fri, 16 Jun 2023 11:30:52 -0700 Subject: [PATCH] review changes changed label import fix test fixes --- ...uvvis_drivers.py => clementine_drivers.py} | 2 +- .../write_UvvisIsisLabelNaifSpiceDriver.ipynb | 117 ++++ .../LUA3107H.161/LUA3107H.161.clem_0.conf | 9 + .../LUA3107H.161.clem_0.xsp} | 336 ++++----- .../LUA3107H.161/LUA3107H.161.clem_1.conf | 9 + .../LUA3107H.161.clem_1.xsp} | 336 ++++----- .../data/LUA3107H.161/LUA3107H.161_isis3.lbl | 411 +++++++++++ .../LUA3107H.161/clem_5sc_0_sliced_-40000.bck | Bin 0 -> 76800 bytes .../LUA3107H.161/clem_5sc_0_sliced_-40000.cmt | 4 + .../clem_5sc_0_sliced_-40000.xfr | 88 ++- .../LUA3107H.161/clem_5sc_1_sliced_-40000.bck | Bin 0 -> 76800 bytes .../LUA3107H.161/clem_5sc_1_sliced_-40000.cmt | 4 + .../clem_5sc_1_sliced_-40000.xfr | 88 ++- .../clem_uvvis_beta_ik_v04.ti | 0 tests/pytests/data/LUA3107H.161/clem_v12.tf | 662 ++++++++++++++++++ .../dspse002.tsc | 0 .../data/LUA3107H.161/lunarMeanEarth001.tf | 370 ++++++++++ tests/pytests/data/LUA3107H.161/naif0012.tls | 152 ++++ .../pck00009.tpc | 0 .../uvvisAddendum004.ti | 0 .../data/LUD3125I.161/LUD3125I.161_isis3.lbl | 140 ---- ..._drivers.py => test_clementine_drivers.py} | 29 +- 22 files changed, 2167 insertions(+), 590 deletions(-) rename ale/drivers/{uvvis_drivers.py => clementine_drivers.py} (96%) create mode 100644 notebooks/write_UvvisIsisLabelNaifSpiceDriver.ipynb create mode 100644 tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.conf rename tests/pytests/data/{LUD3125I.161/6.clem_0.xsp => LUA3107H.161/LUA3107H.161.clem_0.xsp} (88%) create mode 100644 tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.conf rename tests/pytests/data/{LUD3125I.161/6.clem_1.xsp => LUA3107H.161/LUA3107H.161.clem_1.xsp} (88%) create mode 100644 tests/pytests/data/LUA3107H.161/LUA3107H.161_isis3.lbl create mode 100644 tests/pytests/data/LUA3107H.161/clem_5sc_0_sliced_-40000.bck create mode 100644 tests/pytests/data/LUA3107H.161/clem_5sc_0_sliced_-40000.cmt rename tests/pytests/data/{LUD3125I.161 => LUA3107H.161}/clem_5sc_0_sliced_-40000.xfr (89%) create mode 100644 tests/pytests/data/LUA3107H.161/clem_5sc_1_sliced_-40000.bck create mode 100644 tests/pytests/data/LUA3107H.161/clem_5sc_1_sliced_-40000.cmt rename tests/pytests/data/{LUD3125I.161 => LUA3107H.161}/clem_5sc_1_sliced_-40000.xfr (89%) rename tests/pytests/data/{LUD3125I.161 => LUA3107H.161}/clem_uvvis_beta_ik_v04.ti (100%) create mode 100644 tests/pytests/data/LUA3107H.161/clem_v12.tf rename tests/pytests/data/{LUD3125I.161 => LUA3107H.161}/dspse002.tsc (100%) create mode 100644 tests/pytests/data/LUA3107H.161/lunarMeanEarth001.tf create mode 100644 tests/pytests/data/LUA3107H.161/naif0012.tls rename tests/pytests/data/{LUD3125I.161 => LUA3107H.161}/pck00009.tpc (100%) rename tests/pytests/data/{LUD3125I.161 => LUA3107H.161}/uvvisAddendum004.ti (100%) delete mode 100644 tests/pytests/data/LUD3125I.161/LUD3125I.161_isis3.lbl rename tests/pytests/{test_uvvis_drivers.py => test_clementine_drivers.py} (53%) diff --git a/ale/drivers/uvvis_drivers.py b/ale/drivers/clementine_drivers.py similarity index 96% rename from ale/drivers/uvvis_drivers.py rename to ale/drivers/clementine_drivers.py index e75cf1334..194b4e6c4 100644 --- a/ale/drivers/uvvis_drivers.py +++ b/ale/drivers/clementine_drivers.py @@ -17,7 +17,7 @@ from ale import util -class UvvisIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, NoDistortion, Driver): +class ClementineUvvisIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, NoDistortion, Driver): """ Driver for reading Ultra-violet Invisible Spectrum ISIS3 Labels """ diff --git a/notebooks/write_UvvisIsisLabelNaifSpiceDriver.ipynb b/notebooks/write_UvvisIsisLabelNaifSpiceDriver.ipynb new file mode 100644 index 000000000..411be7e0f --- /dev/null +++ b/notebooks/write_UvvisIsisLabelNaifSpiceDriver.ipynb @@ -0,0 +1,117 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "318dcdae", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "accb1a2f", + "metadata": {}, + "outputs": [], + "source": [ + "import os\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.drivers.clementine_drivers import ClementineUvvisIsisLabelNaifSpiceDriver\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", + "\n", + "from ale import util\n", + "from ale.util import generate_kernels_from_cube\n", + "from ale.formatters.formatter import to_isd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0d88ed00", + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"ISISDATA\"] = \"\"\n", + "os.environ[\"ISISTESTDATA\"] = \"\"\n", + "os.environ[\"ISISROOT\"] = \"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e3f8e49", + "metadata": {}, + "outputs": [], + "source": [ + "!spiceinit from=LUA3107H.161.clem.cub" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94fe9e7b", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "ale_file = \"LUA3107H.161.clem.cub\"\n", + "\n", + "with ClementineUvvisIsisLabelNaifSpiceDriver(ale_file, props = {\"kernels\" : kernels}) as driver: \n", + " ale_isd = to_isd(driver)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa530588", + "metadata": {}, + "outputs": [], + "source": [ + "pprint.pprint(ale_isd)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f53f8dce-c5a4-49fa-baf3-0fe472f46bdc", + "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.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.conf b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.conf new file mode 100644 index 000000000..e0cf1fbf3 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.conf @@ -0,0 +1,9 @@ +LEAPSECONDS_KERNEL = /Users/ahibl/astro_efs/base/kernels/lsk/naif0012.tls +SPK_KERNEL = uvvis/LUA3107H.161.clem_0.bsp + BODIES = 0, 3, 10, 301, -40 + 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/base/kernels/spk/de430.bsp + INCLUDE_COMMENTS = no + SOURCE_SPK_KERNEL = /Users/ahibl/astro_efs/Clementine1/kernels/spk/SPKMERGE_940219_940504_CLEMV001b.bsp + INCLUDE_COMMENTS = no diff --git a/tests/pytests/data/LUD3125I.161/6.clem_0.xsp b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.xsp similarity index 88% rename from tests/pytests/data/LUD3125I.161/6.clem_0.xsp rename to tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.xsp index df3ccb563..0096699a1 100644 --- a/tests/pytests/data/LUD3125I.161/6.clem_0.xsp +++ b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_0.xsp @@ -3,156 +3,10 @@ DAFETF NAIF DAF ENCODED TRANSFER FILE '2' '6' 'SPKMERGE ' -BEGIN_ARRAY 1 136 -'Segment 5 ' -'-ADAEE9A58AB498^7' -'-ADAEDA9B4D43F^7' -'-28' -'12D' -'1' -'8' -136 -'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' -'7C41CCAE83F188^3' -'1CEC005A7918EC^3' -'-30B88E7E7C37EC^3' -'C2E9A0FEA8CBE8^0' -'-9B17E599B814^0' -'17370585514F7F^1' -'-ADAEEF3D07A56^7' -'14^2' -'9^1' -'16^2' -END_ARRAY 1 136 -BEGIN_ARRAY 2 45 +BEGIN_ARRAY 1 45 'DE-0430LE-0430 ' -'-ADAEE9A58AB498^7' -'-ADAEDA9B4D43F^7' +'-ADAEEA74017D5^7' +'-ADAEDB69BFF418^7' '12D' '3' '1' @@ -203,11 +57,11 @@ BEGIN_ARRAY 2 45 '546^5' '29^2' '1^1' -END_ARRAY 2 45 -BEGIN_ARRAY 3 39 +END_ARRAY 1 45 +BEGIN_ARRAY 2 39 'DE-0430LE-0430 ' -'-ADAEE9A58AB498^7' -'-ADAEDA9B4D43F^7' +'-ADAEEA74017D5^7' +'-ADAEDB69BFF418^7' 'A' '0' '1' @@ -252,11 +106,11 @@ BEGIN_ARRAY 3 39 '1518^6' '23^2' '1^1' -END_ARRAY 3 39 -BEGIN_ARRAY 4 45 +END_ARRAY 2 39 +BEGIN_ARRAY 3 45 'DE-0430LE-0430 ' -'-ADAEE9A58AB498^7' -'-ADAEDA9B4D43F^7' +'-ADAEEA74017D5^7' +'-ADAEDB69BFF418^7' '3' '0' '1' @@ -307,28 +161,174 @@ BEGIN_ARRAY 4 45 '1518^6' '29^2' '1^1' -END_ARRAY 4 45 +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/6.clem_0.bsp LOG FILE +; uvvis/LUA3107H.161.clem_0.bsp LOG FILE -; Created 2023-06-06/12:58:32.00. +; 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/6.clem_0.bsp -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:04:09.468 - END_TIME = 1994 MAR 25 15:08:10.108 +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:04:09.468 - END_TIME = 1994 MAR 25 15:08:10.108 + 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.conf b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.conf new file mode 100644 index 000000000..9b3141eb3 --- /dev/null +++ b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.conf @@ -0,0 +1,9 @@ +LEAPSECONDS_KERNEL = /Users/ahibl/astro_efs/base/kernels/lsk/naif0012.tls +SPK_KERNEL = uvvis/LUA3107H.161.clem_1.bsp + BODIES = 0, 3, 10, 301, -40 + 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/base/kernels/spk/de430.bsp + INCLUDE_COMMENTS = no + SOURCE_SPK_KERNEL = /Users/ahibl/astro_efs/Clementine1/kernels/spk/SPKMERGE_940219_940504_CLEMV001b.bsp + INCLUDE_COMMENTS = no diff --git a/tests/pytests/data/LUD3125I.161/6.clem_1.xsp b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.xsp similarity index 88% rename from tests/pytests/data/LUD3125I.161/6.clem_1.xsp rename to tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.xsp index 6fcbce848..7beba1b8b 100644 --- a/tests/pytests/data/LUD3125I.161/6.clem_1.xsp +++ b/tests/pytests/data/LUA3107H.161/LUA3107H.161.clem_1.xsp @@ -3,156 +3,10 @@ DAFETF NAIF DAF ENCODED TRANSFER FILE '2' '6' 'SPKMERGE ' -BEGIN_ARRAY 1 136 -'Segment 5 ' -'-ADAECA79038998^7' -'-ADAEBB78E2C4F^7' -'-28' -'12D' -'1' -'8' -136 -'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' -'8C84B3AD1779A8^3' -'8B24A25A302C28^2' -'-17462849F73848^2' -'46E4A325B3D238^0' -'-ACE292D2FC3B6^0' -'18B4E1E945E489^1' -'-ADAECFFD07A56^7' -'14^2' -'9^1' -'16^2' -END_ARRAY 1 136 -BEGIN_ARRAY 2 45 +BEGIN_ARRAY 1 45 'DE-0430LE-0430 ' -'-ADAECA79038998^7' -'-ADAEBB78E2C4F^7' +'-ADAECB477A5248^7' +'-ADAEBC4755751^7' '12D' '3' '1' @@ -203,11 +57,11 @@ BEGIN_ARRAY 2 45 '546^5' '29^2' '1^1' -END_ARRAY 2 45 -BEGIN_ARRAY 3 39 +END_ARRAY 1 45 +BEGIN_ARRAY 2 39 'DE-0430LE-0430 ' -'-ADAECA79038998^7' -'-ADAEBB78E2C4F^7' +'-ADAECB477A5248^7' +'-ADAEBC4755751^7' 'A' '0' '1' @@ -252,11 +106,11 @@ BEGIN_ARRAY 3 39 '1518^6' '23^2' '1^1' -END_ARRAY 3 39 -BEGIN_ARRAY 4 45 +END_ARRAY 2 39 +BEGIN_ARRAY 3 45 'DE-0430LE-0430 ' -'-ADAECA79038998^7' -'-ADAEBB78E2C4F^7' +'-ADAECB477A5248^7' +'-ADAEBC4755751^7' '3' '0' '1' @@ -307,28 +161,174 @@ BEGIN_ARRAY 4 45 '1518^6' '29^2' '1^1' -END_ARRAY 4 45 +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/6.clem_1.bsp LOG FILE +; uvvis/LUA3107H.161.clem_1.bsp LOG FILE -; Created 2023-06-06/12:58:32.00. +; 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/6.clem_1.bsp -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:28.251 - END_TIME = 1994 MAR 25 15:16:28.259 +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:28.251 - END_TIME = 1994 MAR 25 15:16:28.259 + 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.bck b/tests/pytests/data/LUA3107H.161/clem_5sc_0_sliced_-40000.bck new file mode 100644 index 0000000000000000000000000000000000000000..61b1928e80cefbb8cf2faabb4251dc87d414d9d5 GIT binary patch literal 76800 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 wSLolF-m6F*uuILvRrT+%E?D7%CLPob< 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/LUD3125I.161/dspse002.tsc b/tests/pytests/data/LUA3107H.161/dspse002.tsc similarity index 100% rename from tests/pytests/data/LUD3125I.161/dspse002.tsc rename to tests/pytests/data/LUA3107H.161/dspse002.tsc 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/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/LUD3125I.161/pck00009.tpc b/tests/pytests/data/LUA3107H.161/pck00009.tpc similarity index 100% rename from tests/pytests/data/LUD3125I.161/pck00009.tpc rename to tests/pytests/data/LUA3107H.161/pck00009.tpc diff --git a/tests/pytests/data/LUD3125I.161/uvvisAddendum004.ti b/tests/pytests/data/LUA3107H.161/uvvisAddendum004.ti similarity index 100% rename from tests/pytests/data/LUD3125I.161/uvvisAddendum004.ti rename to tests/pytests/data/LUA3107H.161/uvvisAddendum004.ti diff --git a/tests/pytests/data/LUD3125I.161/LUD3125I.161_isis3.lbl b/tests/pytests/data/LUD3125I.161/LUD3125I.161_isis3.lbl deleted file mode 100644 index 1c255e3e4..000000000 --- a/tests/pytests/data/LUD3125I.161/LUD3125I.161_isis3.lbl +++ /dev/null @@ -1,140 +0,0 @@ -PDS_VERSION_ID = PDS3 - -/* ** FILE FORMAT ** */ -RECORD_TYPE = UNDEFINED - -/* ** POINTERS TO START BYTE OFFSET OF OBJECTS IN FILE ** */ -^IMAGE_HISTOGRAM = 4788 -^BROWSE_IMAGE = 5812 -^IMAGE = 7540 - -/* ** GENERAL DATA DESCRIPTION PARAMETERS ** */ -MISSION_NAME = "DEEP SPACE PROGRAM SCIENCE EXPERIMENT" -SPACECRAFT_NAME = "CLEMENTINE 1" -DATA_SET_ID = CLEM1-L/E/Y-A/B/U/H/L/N-2-EDR-V1.0 -PRODUCT_ID = LUD3125I.161 -ORIGINAL_PRODUCT_ID = LUD31650.161 -PRODUCER_INSTITUTION_NAME = "NAVAL RESEARCH LABORATORY" -PRODUCT_TYPE = EDR -EDR_SOFTWARE_NAME = "NRL-ACT-MGRAB V1.2" -MISSION_PHASE_NAME = "LUNAR MAPPING" -DATA_QUALITY_ID = N/A -TARGET_NAME = MOON -REVOLUTION_NUMBER = 161 -FRAME_SEQUENCE_NUMBER = 3125 - -/* ** TIME PARAMETERS ** */ -START_TIME = 1994-03-25T15:14:28.251Z -STOP_TIME = N/A -UNCORRECTED_START_TIME = 1994-03-25T15:14:27.270Z -SPACECRAFT_CLOCK_START_COUNT = N/A -SPACECRAFT_CLOCK_STOP_COUNT = N/A -PRODUCT_CREATION_TIME = 1994-11-03T15:23:44 - -/* ** CAMERA RELATED PARAMETERS ** */ -INSTRUMENT_NAME = "ULTRAVIOLET/VISIBLE CAMERA" -INSTRUMENT_ID = UVVIS -FILTER_NAME = D -CENTER_FILTER_WAVELENGTH = 950 -BANDWIDTH = 30 -GAIN_MODE_ID = 1 -MCP_GAIN_MODE_ID = N/A -OFFSET_MODE_ID = 6 -EXPOSURE_DURATION = 8.0240 -LENS_TEMPERATURE = 267.46 -FOCAL_PLANE_TEMPERATURE = 270.227 -CRYOCOOLER_TEMPERATURE = N/A -CRYOCOOLER_DURATION = N/A - -/* ** J2000 (ALSO CALLED EME2000) IS THE INERTIAL REFERENCE SYSTEM ** */ -/* ** USED TO SPECIFY OBSERVATIONAL GEOMETRY. LATITUDE AND LONGITUDE ** */ -/* ** COORDINATES OF TARGET ARE PLANETOCENTRIC. GEOMETRIC PARAMETERS ** */ -/* ** ARE BASED ON BEST AVAILABLE DATA AT TIME OF PRODUCT CREATION. ** */ -/* ** REFER TO CLEMENTINE SPICE DATA BASE FOR THE MOST CURRENT ** */ -/* ** OBSERVATIONAL GEOMETRY DATA. ** */ -/* ** LINE-OF-SITE ON CELESTIAL SPHERE: Angles in ** */ -RIGHT_ASCENSION = 187.19 -DECLINATION = 9.18 -TWIST_ANGLE = 335.12 -RETICLE_POINT_RA = (183.74, 188.86, 190.66, 185.50) -RETICLE_POINT_DECLINATION = (8.44, 6.10, 9.89, 12.26) - -/* ** OBSERVATIONAL SEQUENCE INFORMATION ** */ -SEQUENCE_TABLE_ID = EEQ_05 - -/* ** TARGET PARAMETERS: Position , Velocity ** */ -SC_TARGET_POSITION_VECTOR = (-2167.9, -280.3, 348.9) -SC_TARGET_VELOCITY_VECTOR = (-0.4835, 0.6556, -1.5266) -TARGET_CENTER_DISTANCE = 2213.6 - -/* ** TARGET WITHIN SENSOR FOV: Angles in ** */ -SLANT_DISTANCE = 476.2 -CENTER_LATITUDE = -9.98 -CENTER_LONGITUDE = 18.63 -HORIZONTAL_PIXEL_SCALE = 0.121 -VERTICAL_PIXEL_SCALE = 0.121 -SMEAR_MAGNITUDE = 0.09 -SMEAR_AZIMUTH = 83.07 -NORTH_AZIMUTH = 269.76 -RETICLE_POINT_LATITUDE = (-10.55, -10.56, -9.41, -9.40) -RETICLE_POINT_LONGITUDE = (19.41, 17.85, 17.85, 19.40) - -/* ** SPACECRAFT POSITION WITH RESPECT TO CENTRAL BODY ** */ -SUB_SPACECRAFT_LATITUDE = -9.99 -SUB_SPACECRAFT_LONGITUDE = 18.57 -SPACECRAFT_ALTITUDE = 476.2 -SUB_SPACECRAFT_AZIMUTH = 8.80 - -/* ** SPACECRAFT LOCATION: Position , Velocity ** */ -SPACECRAFT_SOLAR_DISTANCE = 149529191.0 -SC_SUN_POSITION_VECTOR = (-149012366.2, -11383819.1, -4970146.1) -SC_SUN_VELOCITY_VECTOR = (2.1726, -28.9325, -10.7032) - -/* ** VIEWING AND LIGHTING GEOMETRY (SUN ON TARGET) ** */ -SOLAR_DISTANCE = 149531364.2 -SUB_SOLAR_AZIMUTH = 260.79 -SUB_SOLAR_LATITUDE = 1.24 -SUB_SOLAR_LONGITUDE = 20.38 -INCIDENCE_ANGLE = 11.35 -PHASE_ANGLE = 11.44 -EMISSION_ANGLE = 0.26 -LOCAL_HOUR_ANGLE = 178.38 - -/* ** LIGHTING GEOMETRY FROM SECONDARY SOURCE ** */ -LIGHT_SOURCE_NAME = EARTH -LIGHT_SOURCE_DISTANCE = 364249.2 -SUB_LIGHT_SOURCE_AZIMUTH = 325.91 -SUB_LIGHT_SOURCE_LATITUDE = 6.48 -SUB_LIGHT_SOURCE_LONGITUDE = 354.85 -LIGHT_SOURCE_INCIDENCE_ANGLE = 28.97 -LIGHT_SOURCE_PHASE_ANGLE = 28.78 - -/* ** DESCRIPTION OF OBJECTS CONTAINED IN THE FILE ** */ -Object = IMAGE_HISTOGRAM - ITEMS = 256 - DATA_TYPE = LSB_INTEGER - ITEM_BYTES = 4 -End_Object - -Object = BROWSE_IMAGE - LINES = 36 - LINE_SAMPLES = 48 - SAMPLING_FACTOR = 8 - SAMPLE_TYPE = UNSIGNED_INTEGER - SAMPLE_BITS = 8 -End_Object - -Object = IMAGE - ENCODING_TYPE = CLEM-JPEG-1 - ENCODING_COMPRESSION_RATIO = 4.61 - LINES = 288 - LINE_SAMPLES = 384 - SAMPLE_TYPE = UNSIGNED_INTEGER - SAMPLE_BITS = 8 - MAXIMUM = 255 - MINIMUM = 42 - MEAN = 212.585 - STANDARD_DEVIATION = 17.709 - CHECKSUM = 3375760 -End_Object -End diff --git a/tests/pytests/test_uvvis_drivers.py b/tests/pytests/test_clementine_drivers.py similarity index 53% rename from tests/pytests/test_uvvis_drivers.py rename to tests/pytests/test_clementine_drivers.py index dc4a654ea..70f408dc7 100644 --- a/tests/pytests/test_uvvis_drivers.py +++ b/tests/pytests/test_clementine_drivers.py @@ -6,50 +6,45 @@ import pytest import ale -from ale.drivers.uvvis_drivers import UvvisIsisLabelNaifSpiceDriver +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('LUD3125I.161') + 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): - # this line throws an error - label_file = get_image_label('LUD3125I.161', 'isis3') + 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('uvvis') + 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("LUD3125I.161", "isis3") - self.driver = UvvisIsisLabelNaifSpiceDriver(label) + label = get_image_label("LUA3107H.161", "isis3") + self.driver = ClementineUvvisIsisLabelNaifSpiceDriver(label) def test_instrument_id(self): - assert self.driver.instrument_id == "UVVIS" + assert self.driver.instrument_id == "ULTRAVIOLET/VISIBLE CAMERA" def test_ephemeris_start_time(self): - with patch('ale.drivers.mro_drivers.spice.scs2e', return_value=12345) as scs2e: + 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.mro_drivers.spice.scs2e', return_value=12345) as scs2e: - assert self.driver.ephemeris_stop_time == 12345 + with patch('ale.drivers.clementine_drivers.spice.utc2et', return_value=12345) as scs2e: + assert self.driver.ephemeris_stop_time >= 12345 - def spacecraft_name(self): - assert self.driver.sensor_name == "UVVIS" # this is probly not correct - - def sensor_name(self): - filter = self.label["IsisCube"]['BandBin']['FilterName'] - assert self.driver.sensor_name == "CLEM_" + super().self.instrument_id + "_" + filter + 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