Commit 29de86a8 authored by Jesse Mapel's avatar Jesse Mapel Committed by Kelvin Rodriguez
Browse files

First pass at Kaguya MI driver (#306)

* First pass at Kaguya MI driver

* Removed old TC documentation for MI

* Fixed MI test boresight
parent 3b6421d0
Loading
Loading
Loading
Loading
+345 −21
Original line number Diff line number Diff line
@@ -216,27 +216,6 @@ class KaguyaTcPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, Driver):
        """
        return spice.gdpool('INS{}_CENTER'.format(self.ikid), 0, 2)[0] - 0.5


    @property
    def reference_frame(self):
        """
        Kaguya uses a slightly more accurate "mean Earth" reference frame for
        moon obvervations. see https://darts.isas.jaxa.jp/pub/spice/SELENE/kernels/fk/moon_assoc_me.tf

        Expects target_name to be defined. This should be a string containing the
        name of the target body.

        Returns
        -------
        : str
          Reference frame
        """
        if self.target_name.lower() == "moon":
            return "MOON_ME"
        else:
            # TODO: How do we handle no target?
            return "NO TARGET"

    @property
    def focal2pixel_samples(self):
        """
@@ -465,3 +444,348 @@ class KaguyaTcPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, Driver):
          ISIS sensor model version
        """
        return 1


class KaguyaMiPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, Driver):
    """
    Driver for a PDS3 Kaguya Multiband Imager (Mi) images. Specifically level2b2 Vis and Nir images.

    NOTES
    -----

    * Kaguaya has adjusted values for some of its keys, usually suffixed with `CORRECTED_`.
      These corrected values should always be preferred over the original values.
    """


    @property
    def utc_start_time(self):
        """
        Returns corrected utc start time.

        If no corrected form is found, defaults to the form specified in parent class.

        Returns
        -------
        : str
          Start time of the image in UTC YYYY-MM-DDThh:mm:ss[.fff]
        """
        return self.label.get('CORRECTED_START_TIME', super().utc_start_time)

    @property
    def utc_stop_time(self):
        """
        Returns corrected utc start time.

        If no corrected form is found, defaults to the form specified in parent class.

        Returns
        -------
        : str
          Stop time of the image in UTC YYYY-MM-DDThh:mm:ss[.fff]

        """

        return self.label.get('CORRECTED_STOP_TIME', super().utc_stop_time)

    @property
    def base_band(self):
        """
        Which band the bands are registered to.
        """
        band_map = {
            "MV1" : "MI-VIS1",
            "MV2" : "MI-VIS2",
            "MV3" : "MI-VIS3",
            "MV4" : "MI-VIS4",
            "MV5" : "MI-VIS5",
            "MN1" : "MI-NIR1",
            "MN2" : "MI-NIR2",
            "MN3" : "MI-NIR3",
            "MN4" : "MI-NIR4"
        }
        base_band = band_map[self.label.get("BASE_BAND")]
        return base_band

    @property
    def instrument_id(self):
        """
        Id takes the form of LISM_<BASE_BAND> where <BASE_BAND> is which band
        the bands were registered to.

        Returns
        -------
        : str
          instrument id
        """

        id = f"LISM_{self.base_band}"
        return id

    @property
    def sensor_frame_id(self):
        """
        Returns the sensor frame id.  Depends on the instrument that was used to
        capture the image.

        Returns
        -------
        : int
          Sensor frame id
        """
        spectra = self.base_band[3]
        return spice.namfrm(f"LISM_MI_{spectra}_HEAD")

    @property
    def spacecraft_name(self):
        """
        Returns "MISSION_NAME" as a proxy for spacecraft_name.

        No NAIF code exists for the spacecraft name 'SELENE-M.'  The NAIF code
        exists only for 'SELENE' or 'KAGUYA' -- 'SELENE' is captured as
        'MISSION_NAME'

        Returns
        -------
        : str
          mission name
        """
        return self.label.get('MISSION_NAME')


    @property
    def spacecraft_clock_stop_count(self):
        """
        The original SC_CLOCK_STOP_COUNT key is often incorrect and cannot be trusted.
        Therefore we get this information from CORRECTED_SC_CLOCK_STOP_COUNT

        Returns
        -------
        : float
          spacecraft clock stop count in seconds
        """
        return self.label.get('CORRECTED_SC_CLOCK_STOP_COUNT').value

    @property
    def spacecraft_clock_start_count(self):
        """
        The original SC_CLOCK_START_COUNT key is often incorrect and cannot be trusted.
        Therefore we get this information from CORRECTED_SC_CLOCK_START_COUNT

        Returns
        -------
        : float
          spacecraft clock start count in seconds
        """
        return self.label.get('CORRECTED_SC_CLOCK_START_COUNT').value

    @property
    def ephemeris_start_time(self):
        """
        Returns the ephemeris start time of the image. Expects spacecraft_id to
        be defined. This should be the integer naif ID code of the spacecraft.

        Returns
        -------
        : float
          ephemeris start time of the image
        """
        return spice.sct2e(self.spacecraft_id, self.spacecraft_clock_start_count)

    @property
    def detector_center_line(self):
        """
        Returns the center detector line of the detector. Expects ikid to be
        defined. This should be the NAIF integer ID code for the sensor.

        We subtract 0.5 from the center line because as per the IK:
        Center of the first pixel is defined as "1.0".

        Returns
        -------
        : int
          The detector line of the principle point
        """
        return spice.gdpool('INS{}_CENTER'.format(self.ikid), 0, 2)[1] - 0.5

    @property
    def detector_center_sample(self):
        """
        Returns the center detector sample of the detector. Expects ikid to be
        defined. This should be the NAIF integer ID code for the sensor.

        We subtract 0.5 from the center sample because as per the IK:
        Center of the first pixel is defined as "1.0".

        Returns
        -------
        : int
          The detector sample of the principle point
        """
        return spice.gdpool('INS{}_CENTER'.format(self.ikid), 0, 2)[0] - 0.5

    @property
    def focal2pixel_samples(self):
        """
        Calculated using 1/pixel pitch
        Expects ikid to be defined. This should be the NAIF integer ID code
        for the sensor.

        Returns
        -------
        : list
          focal plane to detector samples
        """
        pixel_size = spice.gdpool('INS{}_PIXEL_SIZE'.format(self.ikid), 0, 1)[0]
        return [0, 0, -1/pixel_size]


    @property
    def focal2pixel_lines(self):
        """
        Calculated using 1/pixel pitch
        Expects ikid to be defined. This should be the NAIF integer ID code
        for the sensor.

        Returns
        -------
        : list
          focal plane to detector lines
        """
        pixel_size = spice.gdpool('INS{}_PIXEL_SIZE'.format(self.ikid), 0, 1)[0]
        return [0, 1/pixel_size, 0]


    @property
    def _odkx(self):
        """
        Returns the x coefficients of the optical distortion model.
        Expects ikid to be defined. This should be the NAIF integer ID code
        for the sensor.

        Returns
        -------
        : list
          Optical distortion x coefficients
        """
        return spice.gdpool('INS{}_DISTORTION_COEF_X'.format(self.ikid),0, 4).tolist()


    @property
    def _odky(self):
        """
        Returns the y coefficients of the optical distortion model.
        Expects tc_id to be defined. This should be a string of the form
        LISM_TC1 or LISM_TC2.

        Returns
        -------
        : list
          Optical distortion y coefficients
        """
        return spice.gdpool('INS{}_DISTORTION_COEF_Y'.format(self.ikid), 0, 4).tolist()

    @property
    def boresight_x(self):
        """
        Returns the x focal plane coordinate of the boresight.
        Expects ikid to be defined. This should be the NAIF integer ID for the
        sensor.

        Returns
        -------
        : float
          Boresight focal plane x coordinate
        """
        return spice.gdpool('INS{}_BORESIGHT'.format(self.ikid), 0, 1)[0]

    @property
    def boresight_y(self):
        """
        Returns the y focal plane coordinate of the boresight.
        Expects ikid to be defined. This should be the NAIF integer ID for the
        sensor.

        Returns
        -------
        : float
          Boresight focal plane x coordinate
        """
        return spice.gdpool('INS{}_BORESIGHT'.format(self.ikid), 1, 1)[0]

    @property
    def line_exposure_duration(self):
        """
        Returns Line Exposure Duration

        Kaguya has an unintuitive key for this called CORRECTED_SAMPLING_INTERVAL.
        The original LINE_EXPOSURE_DURATION PDS3 keys is often incorrect and cannot
        be trusted.

        Returns
        -------
        : float
          Line exposure duration
        """
        # It's a list, but only sometimes.
        # seems to depend on whether you are using the original zipped archives or
        # if its downloaded from Jaxa's image search:
        # (https://darts.isas.jaxa.jp/planet/pdap/selene/product_search.html#)
        try:
            return self.label['CORRECTED_SAMPLING_INTERVAL'][0].value * 0.001 # Scale to seconds
        except:
            return self.label['CORRECTED_SAMPLING_INTERVAL'].value * 0.001  # Scale to seconds


    @property
    def focal_length(self):
        """
        Returns camera focal length
        Expects ikid to be defined. This should be the NAIF ID for the base band.

        Returns
        -------
        : float
          Camera focal length
        """
        return float(spice.gdpool('INS{}_FOCAL_LENGTH'.format(self.ikid), 0, 1)[0])

    @property
    def usgscsm_distortion_model(self):
        """
        Kaguya uses a unique radial distortion model so we need to overwrite the
        method packing the distortion model into the ISD.

        from the IK:

        Line-of-sight vector of pixel no. n can be expressed as below.

        Distortion coefficients information:
        INS<INSTID>_DISTORTION_COEF_X  = ( a0, a1, a2, a3)
        INS<INSTID>_DISTORTION_COEF_Y  = ( b0, b1, b2, b3),

        Distance r from the center:
        r = - (n - INS<INSTID>_CENTER) * INS<INSTID>_PIXEL_SIZE.

        Line-of-sight vector v is calculated as
        v[X] = INS<INSTID>BORESIGHT[X] + a0 + a1*r + a2*r^2 + a3*r^3 ,
        v[Y] = INS<INSTID>BORESIGHT[Y] + r+a0 + a1*r +a2*r^2 + a3*r^3 ,
        v[Z] = INS<INSTID>BORESIGHT[Z]

        Expects odkx and odky to be defined. These should be a list of optical
        distortion x and y coefficients respectively.

        Returns
        -------
        : dict
          radial distortion model

        """
        return {
            "kaguyalism": {
                "x" : self._odkx,
                "y" : self._odky,
                "boresight_x" : self.boresight_x,
                "boresight_y" : self.boresight_y
            }
        }
+142 −0
Original line number Diff line number Diff line
PDS_VERSION_ID                       = "PDS3"

/*** FILE FORMAT ***/
RECORD_TYPE                          = "UNDEFINED"
FILE_NAME                            = "MVA_2B2_01_02329N002E0302.img"

/*** POINTERS TO START BYTE OFFSET OF OBJECTS IN FILE ***/
^IMAGE                               = ("MVA_2B2_01_02329N002E0302.img", 1 <BYTES>)

/*** BASIC INFORMATION ***/
MISSION_NAME                         = "SELENE"
DATA_SET_ID                          = "SLN-L-MI-3-VIS-LEVEL2B2-V1.0"
DATA_SET_NAME                        = "SELENE MOON MI 3 VIS LEVEL2B2 V1.0"
L2DB_ORIGINAL_ID                     = "MI-VIS_Level2B2"
PRODUCT_ID                           = "MVA_2B2_01_02329N002E0302"
INSTRUMENT_TYPE                      = "IMAGER"
INSTRUMENT_ID                        = "MI-VIS"
INSTRUMENT_NAME                      = "MULTIBAND IMAGER VISIBLE"
INSTRUMENT_HOST_NAME                 = "SELENE MAIN ORBITER"
TARGET_TYPE                          = "SATELLITE"
TARGET_NAME                          = "MOON"
START_TIME                           = 2008-04-17T00:34:47.373598
STOP_TIME                            = 2008-04-17T00:34:59.841598

/*** GENERAL DATA DESCRIPTION PARAMETERS ***/
SOFTWARE_NAME                        = "RGC_TC_MI"
SOFTWARE_VERSION                     = "2.6.0"
PROCESS_VERSION_ID                   = "L2B"
PRODUCT_CREATION_TIME                = 2009-11-14T19:30:51
PROGRAM_START_TIME                   = 2009-11-14T15:30:23
PRODUCER_ID                          = "LISM"
PRODUCT_SET_ID                       = "MI-VIS_Level2B2"
PRODUCT_VERSION_ID                   = "01"
REGISTERED_PRODUCT                   = "Y"
LEVEL2A_FILE_NAME                    = "MV52A0_02NS02329_003_0066.img"
SPICE_METAKERNEL_FILE_NAME           = "RGC_INF_TCv301IK_MIv104IK_SPv104IK_RISE100g_de421_091007.mk"

/*** SCENE RELATED PARAMETERS ***/
MISSION_PHASE_NAME                   = "Nominal"
REVOLUTION_NUMBER                    = 2329
STRIP_SEQUENCE_NUMBER                = 3
SCENE_SEQUENCE_NUMBER                = 66
UPPER_LEFT_DAYTIME_FLAG              = "Day"
UPPER_RIGHT_DAYTIME_FLAG             = "Day"
LOWER_LEFT_DAYTIME_FLAG              = "Day"
LOWER_RIGHT_DAYTIME_FLAG             = "Day"
OBSERVATION_MODE_ID                  = "NORMAL"
SENSOR_DESCRIPTION                   = "MI is a multiband push-broom imaging camera consisting of VIS(V) and NIR(N) sensors (each has nadir-directed optics of f number 65 mm and F ratio 3.7). Detector pixel sizes in micron are 13(V) and 40(N)."
SENSOR_DESCRIPTION2                  = "Physical band arrangement [from satellite -x to +x] are VIS1>VIS2>VIS5>VIS4>VIS3 and NIR3>NIR4>NIR1>NIR2. Parallax between nearest band sets [degree] are 2.7 for VIS and 2.6 for NIR. Sampling time [msec] are 13 for VIS and 39 for NIR."
DETECTOR_STATUS                      = ("TC1:OFF","TC2:OFF","MV:ON","MN:ON","SP:ON")
EXPOSURE_MODE_ID                     = "SHORT"
LINE_EXPOSURE_DURATION               = (1.329700 <ms>)
SPACECRAFT_CLOCK_START_COUNT         =  "892427681.9160 <s>"
SPACECRAFT_CLOCK_STOP_COUNT          =  "892427694.3840 <s>"
CORRECTED_SC_CLOCK_START_COUNT       =  892427681.910768 <s>
CORRECTED_SC_CLOCK_STOP_COUNT        =  892427694.377744 <s>
CORRECTED_START_TIME                 = 2008-04-17T00:34:47.368366
CORRECTED_STOP_TIME                  = 2008-04-17T00:34:59.835341
LINE_SAMPLING_INTERVAL               =  13.000000 <ms>
CORRECTED_SAMPLING_INTERVAL          = (12.999974 <ms>)
UPPER_LEFT_LATITUDE                  =   0.570818 <deg>
UPPER_LEFT_LONGITUDE                 =  29.865282 <deg>
UPPER_RIGHT_LATITUDE                 =   0.567533 <deg>
UPPER_RIGHT_LONGITUDE                =  30.446215 <deg>
LOWER_LEFT_LATITUDE                  =  -0.069627 <deg>
LOWER_LEFT_LONGITUDE                 =  29.858614 <deg>
LOWER_RIGHT_LATITUDE                 =  -0.072846 <deg>
LOWER_RIGHT_LONGITUDE                =  30.439950 <deg>
LOCATION_FLAG                        = "D"
ROLL_CANT                            = "NO"
SCENE_CENTER_LATITUDE                =   0.248754 <deg>
SCENE_CENTER_LONGITUDE               =  30.152558 <deg>
INCIDENCE_ANGLE                      =  13.790 <deg>
EMISSION_ANGLE                       =   0.463 <deg>
PHASE_ANGLE                          =  13.893 <deg>
SOLAR_AZIMUTH_ANGLE                  =  85.141 <deg>
FOCAL_PLANE_TEMPERATURE              = (21.78 <degC>)
TELESCOPE_TEMPERATURE                = (18.77 <degC>)
SATELLITE_MOVING_DIRECTION           = +1
FIRST_SAMPLED_LINE_POSITION          = "UPPERMOST"
FIRST_DETECTOR_ELEM_POSITION         = "LEFT"
A_AXIS_RADIUS                        = 1737.400 <km>
B_AXIS_RADIUS                        = 1737.400 <km>
C_AXIS_RADIUS                        = 1737.400 <km>
DEFECT_PIXEL_POSITION                = ("N/A", "N/A", "N/A", "N/A", "N/A")

/*** CAMERA RELATED PARAMETERS ***/
FILTER_NAME                          = ("MV1", "MV2", "MV3", "MV4", "MV5")
CENTER_FILTER_WAVELENGTH             = (414.0 <nm>, 749.0 <nm>, 901.0 <nm>, 950.0 <nm>, 1001.0 <nm>)
BANDWIDTH                            = (20.0 <nm>, 12.0 <nm>, 21.0 <nm>, 30.0 <nm>, 42.0 <nm>)
BASE_BAND                            = "MV5"
SPACECRAFT_ALTITUDE                  =   91.868 <km>
SPACECRAFT_GROUND_SPEED              =  1.559 <km/s>

/*** DESCRIPTION OF OBJECTS CONTAINED IN THE FILE ***/

OBJECT                               = IMAGE
    NOMINAL_LINE_NUMBER              = 864
    NOMINAL_OVERLAP_LINE_NUMBER      = 96
    OVERLAP_LINE_NUMBER              = 96
    BANDS                            = 5
    BAND_STORAGE_TYPE                = "BAND_SEQUENTIAL"
    LINES                            = 960
    LINE_SAMPLES                     = 962
    SAMPLE_TYPE                      = MSB_INTEGER
    SAMPLE_BITS                      = 16
    IMAGE_VALUE_TYPE                 = "RADIANCE"
    UNIT                             = "W/m**2/micron/sr"
    SCALING_FACTOR                   = 1.30000e-02
    OFFSET                           = 0.00000e+00
    MIN_FOR_STATISTICAL_EVALUATION   = (0, 0, 0, 0, 0)
    MAX_FOR_STATISTICAL_EVALUATION   = (32767, 32767, 32767, 32767, 32767)
    SCENE_MAXIMUM_DN                 = (5698, 7175, 5113, 4541, 4230)
    SCENE_MINIMUM_DN                 = (1213, 1959, 1481, 1421, 1297)
    SCENE_AVERAGE_DN                 = (1535.2, 2426.1, 1800.0, 1715.8, 1622.5)
    SCENE_STDEV_DN                   = (181.0, 272.4, 185.3, 171.2, 164.9)
    SCENE_MODE_DN                    = (1396, 2241, 1793, 1613, 1500)
    SHADOWED_AREA_MINIMUM            = (0, 0, 0, 0, 0)
    SHADOWED_AREA_MAXIMUM            = (327, 327, 327, 327, 327)
    SHADOWED_AREA_PERCENTAGE         = (0, 0, 0, 0, 0)
    INVALID_TYPE                     = ("SATURATION" , "MINUS" , "DUMMY_DEFECT" , "OTHER")
    INVALID_VALUE                    = (-20000 , -21000 , -22000 , -23000)
    INVALID_PIXELS                   = ((0 , 0 , 0 , 0), (0 , 0 , 0 , 0), (0 , 0 , 0 , 0), (0 , 0 , 0 , 0), (0 , 0 , 0 , 0))
    OUT_OF_IMAGE_BOUNDS_VALUE        = -30000
    OUT_OF_IMAGE_BOUNDS_PIXELS       = (3844, 3259, 3493, 2841, 0)
END_OBJECT                           = IMAGE

OBJECT                               = PROCESSING_PARAMETERS
    DARK_FILE_NAME                   = "MIV_DRK_02269_02609_S___002.csv"
    FT_FILE_NAME                     = "MIV_FTF_PRFLT_N___v01.csv"
    FLAT_FILE_NAME                   = "MIV_FLT_02269_02609_N___002.csv"
    EFFIC_FILE_NAME                  = "MIV_EFF_PRFLT_N___v01.csv"
    NONLIN_FILE_NAME                 = "MIV_NLT_PRFLT_N___v01.csv"
    RAD_CNV_COEF                     = (1.470593 <W/m**2/micron/sr>, 2.204781 <W/m**2/micron/sr>, 2.244315 <W/m**2/micron/sr>, 2.734361 <W/m**2/micron/sr>, 1.885889 <W/m**2/micron/sr>)
    RESAMPLING_METHOD                = "Bi-Linear"
    L2A_DEAD_PIXEL_THRESHOLD         = (35, 35, 35, 35, 35)
    L2A_SATURATION_THRESHOLD         = (1023, 1023, 1023, 1023, 1023)
    DARK_VALID_MINIMUM               = (-3, -3, -3, -3, -3)
    FT_VALID_MINIMUM                 = -2
    RADIANCE_SATURATION_THRESHOLD    = 425.971000 <W/m**2/micron/sr>
END_OBJECT                           = PROCESSING_PARAMETERS
END
+284 −0
Original line number Diff line number Diff line
DAFETF NAIF DAF ENCODED TRANSFER FILE
'DAF/SPK '
'2'
'6'
'SPKMERGE                                                    '
BEGIN_ARRAY 1 86
'SPK_STATES_09                           '
'F98AD2D8D3673^7'
'F98AD44ED77FC^7'
'-83'
'12D'
'1'
'9'
86
'5237651612278^3'
'-AA70B440B09FC^2'
'4E9616B756C384^3'
'112CAB0A422A81^1'
'B1D6ED3EEDFC6^0'
'-10809C11A841D8^1'
'561EF5A10E195C^3'
'-808861D057D288^2'
'4A9B56E1E098B^3'
'1022E3D1C2095B^1'
'B3AF4BB10585B8^0'
'-1172A247949938^1'
'59C6D06E306EA8^3'
'-5640F4764E9498^2'
'46695BABBD0C3C^3'
'F0D23D486673C^0'
'B5024831796D3^0'
'-1257CEAE4B2ED8^1'
'5D2C3EF9574E14^3'
'-2BB9D44D53F974^2'
'42033CAC2BC668^3'
'DEC38346A5499^0'
'B5CEA942FB976^0'
'-132F72C747DAAD^1'
'604CBC6EE9D2F^3'
'-112ACB0F611929^1'
'3D6C3987515922^3'
'CC0FB8D2EAF2E^0'
'B6137CBA8D5938^0'
'-13F8E871E7615E^1'
'6325F828952E3^3'
'2994B0891BDFA^2'
'38A7B777B8077^3'
'B8C4F64D1F73E8^0'
'B5D074D04C65E8^0'
'-14B394A4D9971F^1'
'65B5D71B480A^3'
'541C762726AE3^2'
'33B93F1A557436^3'
'A4F1C98EE13E88^0'
'B5060F408478A^0'
'-155EE480BC3A56^1'
'67FA76015B7B28^3'
'7E650F4811617^2'
'2EA47A1209F74^3'
'90A5611D17177^0'
'B3B5AA30EA205^0'
'-15FA527F7458D1^1'
'69F22B3C14F79C^3'
'A84F4CF360A588^2'
'296D2ECCE8E418^3'
'7BEF2D2CC3AC88^0'
'B1E1382197D218^0'
'-16856FC6B8806^1'
'6B9B8632DAC884^3'
'D1BC72B4553D48^2'
'24173B2F0E1CEA^3'
'66DE180949956^0'
'AF8A606B5D3868^0'
'-16FFDFAB8D939F^1'
'6CF54EBEAC8024^3'
'FA8E09F1FE82B^2'
'1EA692F75C542F^3'
'5181BBE3E95AE8^0'
'ACB1FD2C9900F^0'
'-176942FE61936A^1'
'6DFE8AA029A8F4^3'
'122A5ED2389F1E^3'
'191F3F1A85E7A8^3'
'3BEB3B5908F4FA^0'
'A95A3323CF7F4^0'
'-17C149A8CABEC2^1'
'F98ABED2F84468^7'
'F98AC292F84468^7'
'F98AC652F8446^7'
'F98ACA12F8446^7'
'F98ACDD2F8446^7'
'F98AD192F8446^7'
'F98AD552F8446^7'
'F98AD912F8446^7'
'F98ADCD2F84458^7'
'F98AE092F84458^7'
'F98AE452F84458^7'
'F98AE812F84458^7'
'B^1'
'C^1'
END_ARRAY 1 86
BEGIN_ARRAY 2 45
'DE-0421LE-0421                          '
'F98AD2D8D3673^7'
'F98AD44ED77FC^7'
'12D'
'3'
'1'
'2'
45
'F99F84^7'
'2A3^5'
'-5AF5DD2973673C^5'
'-D6F4B42646599^3'
'4828B9B66EDE78^4'
'-7CD25BBFE8DC14^2'
'-44F9B7EEDEE27^2'
'15671E7F7BAB4^1'
'DFA9EE2C479EA8^-1'
'-6C1655A30BC75C^-2'
'-329DBDB1A46626^-3'
'-DFCA0BC220D7C8^-4'
'15E1220F98A435^-4'
'4D4DD41EFE509C^-6'
'-13F06CE7048A28^-6'
'9A62074152CC98^3'
'-23D07C0F6CD152^5'
'-13C8B94F3103E2^3'
'4B1A6C3B8B3584^3'
'-C64E83C740A69^1'
'-24100BA4CD8104^1'
'F77BBA84E6BF08^-1'
'1A566363931B8B^-2'
'5AC3FA5A65670C^-3'
'-ADDAD999C4BDB8^-4'
'-BBF570D1698E2^-5'
'15ED55053E346B^-5'
'-241C9A46356F1^-7'
'-4C5F0B3AC5210C^4'
'-12CB2E6D99355^5'
'37F181A25C9468^3'
'26F0F87798471^3'
'-A8B9609053C048^1'
'-11B9E5D07725E6^1'
'8FB0F07165CD7^-1'
'7844C06553C13^-3'
'2C712EAB31B392^-3'
'-67BF2632843F5^-4'
'-4E8724AE511BA^-5'
'BC9DAF9897549^-6'
'-256F3E3EDE2D92^-7'
'F97554^7'
'546^5'
'29^2'
'1^1'
END_ARRAY 2 45
BEGIN_ARRAY 3 39
'DE-0421LE-0421                          '
'F98AD2D8D3673^7'
'F98AD44ED77FC^7'
'A'
'0'
'1'
'2'
39
'F920F4^7'
'A8C^5'
'-1254C22DCBE818^5'
'-1E24A01B7BF1D6^4'
'44DB972AE80194^1'
'1F876FCFE6795F^0'
'-30ECBD173DFC3C^-1'
'-681A1D99427114^-2'
'-49385D0CC7F0FC^-3'
'13FFBB2E9D8EC2^-3'
'4BF9AE9DF0F5D4^-4'
'55E741CFF8575C^-5'
'-D4D679559CDA58^-6'
'A74ADB20B31F5^5'
'-1FC078067588C9^3'
'-16F6D27F07E90C^2'
'2A566B9105F5FC^0'
'2212910A5F7D76^-1'
'-20259477D0C228^-2'
'-C588D9E83B29D^-3'
'-15EE4C5118506C^-3'
'8B0DE01A7C4628^-5'
'8C71DB7B5C1C68^-5'
'14F23BA68DF057^-5'
'462A01C23A168^5'
'-47FB9793346AC4^2'
'-A2A8086607C45^1'
'13DD0FDB84EF6B^0'
'16A2B4246BF156^-1'
'-631D94ED80A764^-3'
'-61D824B5DD538^-3'
'-DCA2F11BD3D6C8^-4'
'-33C515C95422AC^-5'
'42D673BD0030F8^-5'
'C91D9AC8CEAB7^-6'
'F87834^7'
'1518^6'
'23^2'
'1^1'
END_ARRAY 3 39
BEGIN_ARRAY 4 45
'DE-0421LE-0421                          '
'F98AD2D8D3673^7'
'F98AD44ED77FC^7'
'3'
'0'
'1'
'2'
45
'F920F4^7'
'A8C^5'
'-83BA31A4202C1^7'
'71ECEF412B9464^6'
'9EE8957F354B8^5'
'-19C51E4B5188D2^4'
'-F22ED74D39D3D^2'
'230E694C95B7A4^1'
'6B34E93E69E4F^-1'
'-30610B2D110DD2^-2'
'7A2CD78507AFD4^-3'
'3DBC5E68357094^-4'
'-6957DEA88877B^-4'
'C7AEABAB7327F^-5'
'3B5334CA42259E^-5'
'-310298BAFFA822^7'
'-10B11B7C39296D^7'
'3BE96417F6D6BC^5'
'3487E36BEF1BAC^4'
'-76580713406334^2'
'-2CB28EB63D3E86^1'
'7BBC1B3F4FA6B8^-1'
'1328F7654C5D1E^-2'
'3182B7277BB8EC^-3'
'-E6B13E5E233BE^-4'
'-10D8E58F8CED44^-4'
'DE8029D8365FA8^-5'
'-1A273BC37928C4^-5'
'-1541A07BBD6FD6^7'
'-73C7E1A7712174^6'
'19F9266A5DCF87^5'
'16C617772A0A19^4'
'-334E4E1F3F92B4^2'
'-136241B165B76^1'
'35FE7EFF0419EA^-1'
'A8BC376E35BC08^-3'
'CF590C929904C8^-4'
'-7CAAD27FD5FCB8^-4'
'273BBD4D084D0E^-5'
'600FED60FD0D8^-5'
'-13AF89C378D03^-5'
'F87834^7'
'1518^6'
'29^2'
'1^1'
END_ARRAY 4 45
TOTAL_ARRAYS 4
 ~NAIF/SPC BEGIN COMMENTS~
; /Users/jmapel/ale/tests/pytests/data/MVA_2B2_01_02329N002E0302/MVA_2B2_01_02329N002E0302_pds3_0.bsp LOG FILE

; Created 2019-10-23/13:35:29.00.
;
; BEGIN SPKMERGE COMMANDS

LEAPSECONDS_KERNEL = /Users/jmapel/ale/tests/pytests/data/MVA_2B2_01_02329N002E0302/naif0012.tls

SPK_KERNEL = /Users/jmapel/ale/tests/pytests/data/MVA_2B2_01_02329N002E0302/MVA_2B2_01_02329N002E0302_pds3_0.bsp
SOURCE_SPK_KERNEL = /Users/jmapel/ale/tests/pytests/data/MVA_2B2_01_02329N002E0302/SEL_M_071020_081226_SGMI_05.BSP
    INCLUDE_COMMENTS = NO
    BODIES           = -131
    BEGIN_TIME       = 2008 APR 17 00:26:20.366
    END_TIME         = 2008 APR 17 00:26:43.742
SOURCE_SPK_KERNEL = /Users/jmapel/ale/tests/pytests/data/MVA_2B2_01_02329N002E0302/de421.bsp
    INCLUDE_COMMENTS = NO
    BODIES           = 3, 10, 301
    BEGIN_TIME       = 2008 APR 17 00:26:20.366
    END_TIME         = 2008 APR 17 00:26:43.742

; END SPKMERGE COMMANDS
 ~NAIF/SPC END COMMENTS~
+291 −0

File added.

Preview size limit exceeded, changes collapsed.

+726 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading