Commit 27d3d5a1 authored by acpaquette's avatar acpaquette Committed by Jesse Mapel
Browse files

Juno ISIS Driver (#290)

* Added initial juno driver

* Added test data for juno

* Added juno workspace notebook

* Updated starting ephemeris time based on isis implementation

* Added testing for juno and updated the sliced kernels

* Removed juno workspace notebook

* Reset kernel slicing notebook

* Reverted data_naif sun position

* Updated juno test with center ephem for sun

* Removed duplicate isis label

* Added doc strings to test
parent ecb0d808
Loading
Loading
Loading
Loading
+70 −0
Original line number Diff line number Diff line
from ale import util
from ale.base.data_naif import NaifSpice
from ale.base.label_isis import IsisLabel
from ale.base.type_sensor import Framer
from ale.base.base import Driver

class JunoJunoCamIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Driver):
    """
    Driver for reading Juno ISIS labels.
    """

    @property
    def instrument_id(self):
        """
        Expects instrument_id to be defined in the IsisLabel mixin. This should be
        a string of the form 'JNC'

        Returns
        -------
        : str
          instrument id
        """
        look_up = {'JNC': 'JUNO_JUNOCAM'}
        return look_up[super().instrument_id]

    @property
    def ephemeris_start_time(self):
        """
        Junos camera is split into stacked frames where an image is made
        of sets of RGBM chuncks. We need to account for these chuncks since
        ISIS produces some number of cubes N where N = M*4.
        Computation obtained from JunoCamera.cpp

        Returns
        -------
        : double
          Starting ephemeris time
        """
        if not hasattr(self, '_ephemeris_start_time'):
            initial_time = super().ephemeris_start_time
            frame_number = self.label['IsisCube']['Instrument']['FrameNumber']
            inter_frame_delay = self.label['IsisCube']['Instrument']['InterFrameDelay'].value
            start_time_bias = self.naif_keywords[f'INS{self.ikid}_START_TIME_BIAS']
            inter_frame_delay_bias = self.naif_keywords[f'INS{self.ikid}_INTERFRAME_DELTA']
            self._ephemeris_start_time = initial_time + start_time_bias + (frame_number - 1) * (inter_frame_delay + inter_frame_delay_bias)
        return self._ephemeris_start_time

    @property
    def sensor_model_version(self):
        """
        Returns
        -------
        : int
          ISIS sensor model version
        """
        return 1

    @property
    def naif_keywords(self):
        """
        Updated set of naif keywords containing the NaifIkCode for the specific
        Juno filter used when taking the image.

        Returns
        -------
        : dict
          Dictionary of keywords and values that ISIS creates and attaches to the label
        """
        filter_code = self.label['IsisCube']['BandBin']['NaifIkCode']
        return {**super().naif_keywords, **util.query_kernel_pool(f"*{filter_code}*")}
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ from ale.base.label_isis import IsisLabel
from ale.base.type_sensor import Framer
from ale.base.base import Driver

class VoyagerCameraLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Driver):
class VoyagerCameraIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, Driver):

    @property
    def instrument_id(self):
+278 −0
Original line number Diff line number Diff line
DAFETF NAIF DAF ENCODED TRANSFER FILE
'DAF/SPK '
'2'
'6'
'SPKMERGE                                                    '
BEGIN_ARRAY 1 72
'JUP310                                  '
'1F535FF6DA8BB1^8'
'1F536054A0B08D^8'
'257'
'5'
'1'
'3'
72
'1F53948^8'
'A8C^4'
'4EC3FA6006F998^1'
'-2E02E6E84228E^2'
'-C61FDA2C6C5E^1'
'-D41EBFFB80EFA^0'
'DEB9DE317F9908^0'
'E39378A1F2DAC^-1'
'-5F52318A0A22^-1'
'-655E785634DC^-2'
'17440DAE74B^-2'
'21FF9506AF4^-3'
'-5E2927EA6678^-4'
'9AAB03810C4CB8^2'
'1306CF0D446674^2'
'-11539566F110A^1'
'-37EF53606CF55E^1'
'-3EE1A3E021164^0'
'23DA47B06C976C^0'
'24770B4737A4^-1'
'-B205CE7E23EC^-2'
'-DF93886E38^-3'
'261733FDD8E^-3'
'38B451EF^-4'
'499B464726284^2'
'86F8E9A7299CB8^1'
'-BCEA20FA1F24C^0'
'-1AE95CBBC9270E^1'
'-1A49F1CC309E4^0'
'114FAA4ECCAA32^0'
'FD4124318DE^-2'
'-566597968ACE^-2'
'-64AB55F72B^-3'
'12A375B11EF^-3'
'19E0E3F99F7^-4'
'-492A9DD1C8023C^-2'
'-40FF3235F76D5C^-2'
'-6BB2BFDCCF91A^-3'
'A24C7074138C18^-3'
'CF97B4ABAA27F8^-4'
'-6A4AB6110EF8D^-4'
'-82EE76CF0410B^-5'
'2298FF389A436^-5'
'3A061D0ED258BE^-6'
'-B28E8494AB8E38^-7'
'0^0'
'DFCD60866FCE8^-3'
'-965316EB528D6^-3'
'-1DC0B8F97CD092^-2'
'-2D2F4FA4C147F6^-3'
'21161FA3D30358^-3'
'2830C0AF0A84BE^-4'
'-E83EE15193CF1^-5'
'-14C73F875A4382^-5'
'41020DA3944444^-6'
'6B873E73AC901C^-7'
'0^0'
'5A44629140D18^-3'
'-5A7FC755B27E^-3'
'-E4FB539A1971^-3'
'-12D9FE5607C568^-3'
'FF92DF472C19^-4'
'116CB46BF6DFB3^-4'
'-70B21995759D34^-5'
'-95A6E610F08458^-6'
'1FCF4A9145DDDD^-6'
'3112C15FFEEEEE^-7'
'0^0'
'1F52EBC^8'
'1518^5'
'44^2'
'1^1'
END_ARRAY 1 72
BEGIN_ARRAY 2 30
'MONTE Chebyshev Polynomial Table        '
'1F535FF6DA8BB1^8'
'1F536054A0B08D^8'
'5'
'0'
'1'
'2'
30
'1F59834^8'
'1518^6'
'-308692E9C6B6E^8'
'3C613A9C65CB8^5'
'1746EE0BF8AF3F^5'
'-10526F1168D01B^2'
'-CB906CA5F9F05^0'
'14BD47EC2F88CA^-2'
'-62698745E9C02C^-5'
'-1972017DFBE17A^-5'
'-18F8BE20B948DF^7'
'-F13834480E26D8^6'
'C240922EB6961^3'
'1343DFDF5D7092^3'
'-14DEFBAA02310E^0'
'-4250B465CF91C4^-2'
'EE17FDC6C0F778^-6'
'8996B72D9D29C8^-6'
'8300DBBE487F^6'
'-677C11340BDA1^6'
'-3DCC453C55DFBE^3'
'8484E267537CD8^2'
'-3FD547ADBC70EA^-1'
'-1CE630F0ECFF53^-2'
'4F293F3D8D886C^-6'
'429411D6DD5908^-6'
'1F446B4^8'
'2A3^6'
'1A^2'
'1^1'
END_ARRAY 2 30
BEGIN_ARRAY 3 39
'MONTE Chebyshev Polynomial Table        '
'1F535FF6DA8BB1^8'
'1F536054A0B08D^8'
'A'
'0'
'1'
'2'
39
'1F4EF74^8'
'A8C^5'
'8591647C49BFB8^5'
'-718BCC33F9120C^3'
'-1838783F05EEBD^2'
'1DD8AB4B1944BB^0'
'E676B019EED4A^-2'
'22554B8B725D64^-3'
'-1B992690098731^-4'
'-52B16D4FBD11B^-5'
'-C79BE54FE8FEE8^-6'
'-165A5443638274^-6'
'-1BCF580A057C5D^-7'
'6892D0FEE180F4^5'
'1DD098FFC246F9^4'
'-5111ADC974962C^1'
'-19AF72F1D266FA^0'
'BE036ADB1C116^-2'
'8DFEE95B117AB8^-3'
'8E3DF83A6DD15^-4'
'7D4D26B22DB48C^-5'
'8E5B3F32E0A1E8^-6'
'50F03357DA17D8^-8'
'-972844043CE2E^-8'
'26E7F2D9710E14^5'
'D116F7B2647608^3'
'-17912763450FE^1'
'-D56CAD9A710938^-1'
'473C176DCDBD64^-2'
'411D24882F63D8^-3'
'4F54076C607AEC^-4'
'4C13520B82B154^-5'
'60BB5D19BF71FC^-6'
'288DB3FF4C1B3C^-7'
'-226A170E103AB^-8'
'1F446B4^8'
'1518^6'
'23^2'
'1^1'
END_ARRAY 3 39
BEGIN_ARRAY 4 73
'MONTE Difference Line Table             '
'1F535FF6DA8BB1^8'
'1F536054A0B08D^8'
'-3D'
'5'
'1'
'1'
73
'1F536EC21F395^8'
'1BEA8510E0CCA^3'
'37D50A21C1994^3'
'53BF8F32A265E^3'
'6FAA144383328^3'
'8B94995463FF2^3'
'A77F1E6544CBC^3'
'C369A37625986^3'
'DF5428870665^3'
'F2EF6337ED522^3'
'1068A9DE8D43F4^4'
'11A25D899BB2C6^4'
'12DC1134AA2198^4'
'1415C4DFB8906A^4'
'16892C35D56E0E^4'
'0^0'
'-1A5B6BE5E92AFC^4'
'67B6CD961BF56C^0'
'-57157914203DF^5'
'18ED4C36EC9D0C^2'
'24163448FD87F2^5'
'1D7D0AF4203743^1'
'F99CCC97D2ED^-4'
'C20E0C70BF40E^-5'
'F0D619D9F41AC^-6'
'18D922B20C3182^-6'
'32162204FB4D9^-7'
'7517A63683F32^-8'
'13248C3DE7B10C^-8'
'36714BD18696C8^-9'
'A3E140A06F822^-A'
'1EC0D04DB56799^-A'
'57E06855083BFC^-B'
'D2F0B4D7ECE7F^-C'
'B9D924A578259^-D'
'-A9BC8^-D'
'-5A8A5D1952EFCC^-D'
'335C9C9846F04E^-2'
'248CC525D95E5^-3'
'29D84C328F65B^-4'
'3F63B4F0C4D084^-5'
'737A00AE850D54^-6'
'ED0567D1470D3^-7'
'2033230A8468E2^-7'
'4374037FFBD844^-8'
'65A7BEE7946A58^-9'
'-AA564069603068^-A'
'-BAFA248BB75B9^-A'
'-582CA1A80D100C^-A'
'-2345B41781F44C^-A'
'-D6DC4978F6263^-B'
'-53E66^-B'
'-154F7BD165DDB9^-2'
'-1ACC4734DA3727^-3'
'-2BC9B768C73CA4^-4'
'-595782F15F1194^-5'
'-D8F49897058278^-6'
'-25DEBA17B11F4E^-6'
'-76AE1E201F2788^-7'
'-199C749A4B0F96^-7'
'-60117C26ECC9F8^-8'
'-17970A02B32089^-8'
'-60B3B31A8EBA84^-9'
'-19C166B479E244^-9'
'-71B0B4FCE3B628^-A'
'-206337D3A1CC36^-A'
'-9F672^-B'
'F^1'
'E^1'
'E^1'
'E^1'
'1F536EC21F3951^8'
'1^1'
END_ARRAY 4 73
TOTAL_ARRAYS 4
 ~NAIF/SPC BEGIN COMMENTS~
; /home/acpaquette/kernel_split/JNCR_2016240_01M06152_V01_METHANE_0008_0.bsp LOG FILE

; Created 2019-10-01/10:52:26.00.
;
; BEGIN SPKMERGE COMMANDS

LEAPSECONDS_KERNEL   = /usgs/cpkgs/isis3/data/base/kernels/lsk/naif0012.tls

SPK_KERNEL = /home/acpaquette/kernel_split/JNCR_2016240_01M06152_V01_METHANE_0008_0.bsp
SOURCE_SPK_KERNEL = /usgs/cpkgs/isis3/data/juno/kernels/spk/juno_rec_160729_160923_161027.bsp
    INCLUDE_COMMENTS = NO
    BODIES           = -61, 5, 10, 599
    BEGIN_TIME       = 2016 AUG 27 08:14:42.671
    END_TIME         = 2016 AUG 27 08:16:16.445

; END SPKMERGE COMMANDS
 ~NAIF/SPC END COMMENTS~
+278 −0
Original line number Diff line number Diff line
DAFETF NAIF DAF ENCODED TRANSFER FILE
'DAF/SPK '
'2'
'6'
'SPKMERGE                                                    '
BEGIN_ARRAY 1 72
'JUP310                                  '
'1F536A9606D561^8'
'1F536AF1F25A8^8'
'257'
'5'
'1'
'3'
72
'1F53948^8'
'A8C^4'
'4EC3FA6006F998^1'
'-2E02E6E84228E^2'
'-C61FDA2C6C5E^1'
'-D41EBFFB80EFA^0'
'DEB9DE317F9908^0'
'E39378A1F2DAC^-1'
'-5F52318A0A22^-1'
'-655E785634DC^-2'
'17440DAE74B^-2'
'21FF9506AF4^-3'
'-5E2927EA6678^-4'
'9AAB03810C4CB8^2'
'1306CF0D446674^2'
'-11539566F110A^1'
'-37EF53606CF55E^1'
'-3EE1A3E021164^0'
'23DA47B06C976C^0'
'24770B4737A4^-1'
'-B205CE7E23EC^-2'
'-DF93886E38^-3'
'261733FDD8E^-3'
'38B451EF^-4'
'499B464726284^2'
'86F8E9A7299CB8^1'
'-BCEA20FA1F24C^0'
'-1AE95CBBC9270E^1'
'-1A49F1CC309E4^0'
'114FAA4ECCAA32^0'
'FD4124318DE^-2'
'-566597968ACE^-2'
'-64AB55F72B^-3'
'12A375B11EF^-3'
'19E0E3F99F7^-4'
'-492A9DD1C8023C^-2'
'-40FF3235F76D5C^-2'
'-6BB2BFDCCF91A^-3'
'A24C7074138C18^-3'
'CF97B4ABAA27F8^-4'
'-6A4AB6110EF8D^-4'
'-82EE76CF0410B^-5'
'2298FF389A436^-5'
'3A061D0ED258BE^-6'
'-B28E8494AB8E38^-7'
'0^0'
'DFCD60866FCE8^-3'
'-965316EB528D6^-3'
'-1DC0B8F97CD092^-2'
'-2D2F4FA4C147F6^-3'
'21161FA3D30358^-3'
'2830C0AF0A84BE^-4'
'-E83EE15193CF1^-5'
'-14C73F875A4382^-5'
'41020DA3944444^-6'
'6B873E73AC901C^-7'
'0^0'
'5A44629140D18^-3'
'-5A7FC755B27E^-3'
'-E4FB539A1971^-3'
'-12D9FE5607C568^-3'
'FF92DF472C19^-4'
'116CB46BF6DFB3^-4'
'-70B21995759D34^-5'
'-95A6E610F08458^-6'
'1FCF4A9145DDDD^-6'
'3112C15FFEEEEE^-7'
'0^0'
'1F52EBC^8'
'1518^5'
'44^2'
'1^1'
END_ARRAY 1 72
BEGIN_ARRAY 2 30
'MONTE Chebyshev Polynomial Table        '
'1F536A9606D561^8'
'1F536AF1F25A8^8'
'5'
'0'
'1'
'2'
30
'1F59834^8'
'1518^6'
'-308692E9C6B6E^8'
'3C613A9C65CB8^5'
'1746EE0BF8AF3F^5'
'-10526F1168D01B^2'
'-CB906CA5F9F05^0'
'14BD47EC2F88CA^-2'
'-62698745E9C02C^-5'
'-1972017DFBE17A^-5'
'-18F8BE20B948DF^7'
'-F13834480E26D8^6'
'C240922EB6961^3'
'1343DFDF5D7092^3'
'-14DEFBAA02310E^0'
'-4250B465CF91C4^-2'
'EE17FDC6C0F778^-6'
'8996B72D9D29C8^-6'
'8300DBBE487F^6'
'-677C11340BDA1^6'
'-3DCC453C55DFBE^3'
'8484E267537CD8^2'
'-3FD547ADBC70EA^-1'
'-1CE630F0ECFF53^-2'
'4F293F3D8D886C^-6'
'429411D6DD5908^-6'
'1F446B4^8'
'2A3^6'
'1A^2'
'1^1'
END_ARRAY 2 30
BEGIN_ARRAY 3 39
'MONTE Chebyshev Polynomial Table        '
'1F536A9606D561^8'
'1F536AF1F25A8^8'
'A'
'0'
'1'
'2'
39
'1F4EF74^8'
'A8C^5'
'8591647C49BFB8^5'
'-718BCC33F9120C^3'
'-1838783F05EEBD^2'
'1DD8AB4B1944BB^0'
'E676B019EED4A^-2'
'22554B8B725D64^-3'
'-1B992690098731^-4'
'-52B16D4FBD11B^-5'
'-C79BE54FE8FEE8^-6'
'-165A5443638274^-6'
'-1BCF580A057C5D^-7'
'6892D0FEE180F4^5'
'1DD098FFC246F9^4'
'-5111ADC974962C^1'
'-19AF72F1D266FA^0'
'BE036ADB1C116^-2'
'8DFEE95B117AB8^-3'
'8E3DF83A6DD15^-4'
'7D4D26B22DB48C^-5'
'8E5B3F32E0A1E8^-6'
'50F03357DA17D8^-8'
'-972844043CE2E^-8'
'26E7F2D9710E14^5'
'D116F7B2647608^3'
'-17912763450FE^1'
'-D56CAD9A710938^-1'
'473C176DCDBD64^-2'
'411D24882F63D8^-3'
'4F54076C607AEC^-4'
'4C13520B82B154^-5'
'60BB5D19BF71FC^-6'
'288DB3FF4C1B3C^-7'
'-226A170E103AB^-8'
'1F446B4^8'
'1518^6'
'23^2'
'1^1'
END_ARRAY 3 39
BEGIN_ARRAY 4 73
'MONTE Difference Line Table             '
'1F536A9606D561^8'
'1F536AF1F25A8^8'
'-3D'
'5'
'1'
'1'
73
'1F536EC21F395^8'
'1BEA8510E0CCA^3'
'37D50A21C1994^3'
'53BF8F32A265E^3'
'6FAA144383328^3'
'8B94995463FF2^3'
'A77F1E6544CBC^3'
'C369A37625986^3'
'DF5428870665^3'
'F2EF6337ED522^3'
'1068A9DE8D43F4^4'
'11A25D899BB2C6^4'
'12DC1134AA2198^4'
'1415C4DFB8906A^4'
'16892C35D56E0E^4'
'0^0'
'-1A5B6BE5E92AFC^4'
'67B6CD961BF56C^0'
'-57157914203DF^5'
'18ED4C36EC9D0C^2'
'24163448FD87F2^5'
'1D7D0AF4203743^1'
'F99CCC97D2ED^-4'
'C20E0C70BF40E^-5'
'F0D619D9F41AC^-6'
'18D922B20C3182^-6'
'32162204FB4D9^-7'
'7517A63683F32^-8'
'13248C3DE7B10C^-8'
'36714BD18696C8^-9'
'A3E140A06F822^-A'
'1EC0D04DB56799^-A'
'57E06855083BFC^-B'
'D2F0B4D7ECE7F^-C'
'B9D924A578259^-D'
'-A9BC8^-D'
'-5A8A5D1952EFCC^-D'
'335C9C9846F04E^-2'
'248CC525D95E5^-3'
'29D84C328F65B^-4'
'3F63B4F0C4D084^-5'
'737A00AE850D54^-6'
'ED0567D1470D3^-7'
'2033230A8468E2^-7'
'4374037FFBD844^-8'
'65A7BEE7946A58^-9'
'-AA564069603068^-A'
'-BAFA248BB75B9^-A'
'-582CA1A80D100C^-A'
'-2345B41781F44C^-A'
'-D6DC4978F6263^-B'
'-53E66^-B'
'-154F7BD165DDB9^-2'
'-1ACC4734DA3727^-3'
'-2BC9B768C73CA4^-4'
'-595782F15F1194^-5'
'-D8F49897058278^-6'
'-25DEBA17B11F4E^-6'
'-76AE1E201F2788^-7'
'-199C749A4B0F96^-7'
'-60117C26ECC9F8^-8'
'-17970A02B32089^-8'
'-60B3B31A8EBA84^-9'
'-19C166B479E244^-9'
'-71B0B4FCE3B628^-A'
'-206337D3A1CC36^-A'
'-9F672^-B'
'F^1'
'E^1'
'E^1'
'E^1'
'1F536EC21F3951^8'
'1^1'
END_ARRAY 4 73
TOTAL_ARRAYS 4
 ~NAIF/SPC BEGIN COMMENTS~
; /home/acpaquette/kernel_split/JNCR_2016240_01M06152_V01_METHANE_0008_1.bsp LOG FILE

; Created 2019-10-01/10:52:27.00.
;
; BEGIN SPKMERGE COMMANDS

LEAPSECONDS_KERNEL   = /usgs/cpkgs/isis3/data/base/kernels/lsk/naif0012.tls

SPK_KERNEL = /home/acpaquette/kernel_split/JNCR_2016240_01M06152_V01_METHANE_0008_1.bsp
SOURCE_SPK_KERNEL = /usgs/cpkgs/isis3/data/juno/kernels/spk/juno_rec_160729_160923_161027.bsp
    INCLUDE_COMMENTS = NO
    BODIES           = -61, 5, 10, 599
    BEGIN_TIME       = 2016 AUG 27 09:00:01.844
    END_TIME         = 2016 AUG 27 09:01:33.764

; END SPKMERGE COMMANDS
 ~NAIF/SPC END COMMENTS~
+76 −0
Original line number Diff line number Diff line
Object = IsisCube
  Object = Core
    StartByte   = 65537
    Format      = Tile
    TileSamples = 824
    TileLines   = 128

    Group = Dimensions
      Samples = 1648
      Lines   = 128
      Bands   = 1
    End_Group

    Group = Pixels
      Type       = SignedWord
      ByteOrder  = Lsb
      Base       = 0.0
      Multiplier = 1.0
    End_Group
  End_Object

  Group = Instrument
    SpacecraftName            = JUNO
    InstrumentHostId          = UNKNOWN
    InstrumentName            = "JUNO EPO CAMERA"
    InstrumentId              = JNC
    TargetName                = JUPITER

    # Start time for the entire observation, i.e. start time for FrameNumber 1.
    StartTime                 = 2016-08-27T09:00:04.129

    # Start count for the entire observation, i.e. start count for FrameNumber 1.
    SpacecraftClockStartCount = 525560580:87
    ExposureDuration          = 204.800000 <ms>
    InterFrameDelay           = 0.378 <s>
    SummingMode               = 1
    NumberFramelets           = 12
    FrameNumber               = 8
  End_Group

  Group = Archive
    MissionPhase          = "SCIENCE ORBITS"
    OrbitNumber           = 1
    FocalPlaneTemperature = 273.0 <K>
    TDICount              = 64
    CompressionType       = "INTEGER COSINE TRANSFORM"
    YearDoy               = 2016240
    SourceProductId       = JNCR_2016240_01M06152_V01
  End_Group

  Group = BandBin
    FilterName = METHANE
    NaifIkCode = -61504
  End_Group

  Group = Kernels
    NaifFrameCode = -61500
  End_Group
End_Object

Object = Label
  Bytes = 65536
End_Object

Object = History
  Name      = IsisCube
  StartByte = 487425
  Bytes     = 533
End_Object

Object = OriginalLabel
  Name      = IsisCube
  StartByte = 487958
  Bytes     = 17903
End_Object
End
Loading