Beispiel #1
0
def test_load_invalid_spice_root(monkeypatch):
    monkeypatch.delenv('ALESPICEROOT', raising=False)
    reload(ale)

    label_file = get_image_label('EN1072174528M')
    with pytest.raises(Exception):
        ale.load(label_file)
Beispiel #2
0
def test_viking1_load(test_kernels, label_type, formatter, image):
    label_file = get_image_label(image, label_type)
    isis_isd = ale.load(label_file,
                        props={'kernels': test_kernels[image]},
                        formatter=formatter)
    print(isis_isd)
    assert compare_dicts(isis_isd, image_dict[image][formatter]) == []
Beispiel #3
0
def test_mex_load(test_kernels, formatter, usgscsm_compare_dict, label):
    label_file = get_image_label('h5270_0000_ir2', label)

    with patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_ephemeris_times', \
               new_callable=PropertyMock) as binary_ephemeris_times, \
        patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_exposure_durations', \
               new_callable=PropertyMock) as binary_exposure_durations, \
        patch('ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver.binary_lines', \
               new_callable=PropertyMock) as binary_lines, \
        patch('ale.drivers.mex_drivers.MexHrscIsisLabelNaifSpiceDriver.ephemeris_time', \
               new_callable=PropertyMock) as ephemeris_time, \
        patch('ale.drivers.mex_drivers.read_table_data', return_value=12345) as read_table_data, \
        patch('ale.drivers.mex_drivers.parse_table', return_value={'EphemerisTime': [255744599.02748165, 255744684.33197814, 255744684.34504557], \
                                                                   'ExposureTime': [0.012800790786743165, 0.012907449722290038, 0.013227428436279297], \
                                                                   'LineStart': [1, 6665, 6666]}) as parse_table:

        ephemeris_time.return_value = [
            255744599.02748, 255744623.61901, 255744635.91477
        ]
        binary_ephemeris_times.return_value = [
            255744599.02748165, 255744599.04028246, 255744795.73322123
        ]
        binary_exposure_durations.return_value = [
            0.012800790786743165, 0.012800790786743165, 0.013227428436279297
        ]
        binary_lines.return_value = [0.5, 1.5, 15086.5]

        usgscsm_isd = ale.load(label_file,
                               props={'kernels': test_kernels},
                               formatter=formatter,
                               verbose='true')
        assert compare_dicts(
            usgscsm_isd,
            usgscsm_compare_dict['h5270_0000_ir2'][formatter]) == []
Beispiel #4
0
def test_cassini_load(test_kernels, usgscsm_compare_dict):
    label_file = get_image_label("N1702360370_1")
    usgscsm_isd = ale.load(label_file,
                           props={'kernels': test_kernels},
                           formatter='usgscsm')
    print(usgscsm_isd)
    assert compare_dicts(usgscsm_isd, usgscsm_compare_dict) == []
Beispiel #5
0
def test_load(test_kernels, usgscsm_comparison_isd):
    label_file = get_image_label('M103595705LE')
    usgscsm_isd = ale.load(label_file,
                           props={'kernels': test_kernels},
                           formatter='usgscsm')
    print(usgscsm_isd)
    assert compare_dicts(usgscsm_isd, usgscsm_comparison_isd) == []
Beispiel #6
0
def test_cassis_load(test_kernels, isis_compare_dict):
    label_file = get_image_label(
        "CAS-MCO-2016-11-26T22.32.14.582-RED-01000-B1", "isis")
    isis_isd = ale.load(label_file,
                        props={'kernels': test_kernels},
                        formatter="isis")

    assert compare_dicts(isis_isd, isis_compare_dict) == []
Beispiel #7
0
def test_load_mes_with_no_metakernels(tmpdir, monkeypatch, mess_kernels):
    monkeypatch.setenv('ALESPICEROOT', str(tmpdir))

    # reload module to repopulate ale.spice_root
    reload(ale)

    updated_kernels = mess_kernels
    label_file = get_image_label('EN1072174528M')
    tmpdir.mkdir('mes')

    # intentially make an mk file with wrong year
    with open(tmpdir.join('mes', 'mes_2016_v1.tm'), 'w+') as mk_file:
        mk_str = util.write_metakernel_from_kernel_list(updated_kernels)
        print(mk_str)
        mk_file.write(mk_str)

    with pytest.raises(Exception):
        usgscsm_isd_obj = ale.load(label_file, verbose=True)
Beispiel #8
0
def test_load_mes_from_metakernels(tmpdir, monkeypatch, mess_kernels):
    monkeypatch.setenv('ALESPICEROOT', str(tmpdir))

    # reload module to repopulate ale.spice_root
    reload(ale)

    updated_kernels = mess_kernels
    label_file = get_image_label('EN1072174528M')
    tmpdir.mkdir('mess')
    with open(tmpdir.join('mess', 'mess_2015_v1.tm'), 'w+') as mk_file:
        mk_str = util.write_metakernel_from_kernel_list(updated_kernels)
        print(mk_str)
        mk_file.write(mk_str)

    usgscsm_isd_obj = ale.load(label_file, verbose=True)

    assert usgscsm_isd_obj['name_platform'] == 'MESSENGER'
    assert usgscsm_isd_obj['name_sensor'] == 'MERCURY DUAL IMAGING SYSTEM NARROW ANGLE CAMERA'
    assert usgscsm_isd_obj['name_model'] == 'USGS_ASTRO_FRAME_SENSOR_MODEL'
Beispiel #9
0
def test_load_invalid_label():
    with pytest.raises(Exception):
        ale.load('Not a label path')
Beispiel #10
0
def test_load(test_kernels):
    isd = {
        'radii': {
            'semimajor': 1737.4,
            'semiminor': 1737.4,
            'unit': 'km'
        },
        'sensor_position': {
            'positions':
            np.array([[195490.61933009, 211972.79163854, -1766965.21759375],
                      [194934.34274256, 211332.14192709, -1767099.36601459],
                      [194378.02078141, 210691.44358962, -1767233.10640484],
                      [193821.65246371, 210050.69819792, -1767366.43865632],
                      [193265.23762617, 209409.90567475, -1767499.36279925],
                      [192708.77531467, 208769.0676026, -1767631.87872367]]),
            'velocities':
            np.array([[-1069.71186948, -1231.97377674, -258.3672068],
                      [-1069.80166655, -1232.06495814, -257.58238805],
                      [-1069.89121909, -1232.15585752, -256.7975062],
                      [-1069.98052705, -1232.24647484, -256.01256158],
                      [-1070.06959044, -1232.3368101, -255.2275542],
                      [-1070.15840923, -1232.42686325, -254.44248439]]),
            'unit':
            'm'
        },
        'sun_position': {
            'positions':
            np.array([[9.50465237e+10, 1.15903815e+11, 3.78729685e+09]]),
            'velocities':
            np.array([[285707.13474515, -232731.15884149, 592.91742112]]),
            'unit':
            'm'
        },
        'sensor_orientation': {
            'quaternions':
            np.array([[-0.19095485, -0.08452708, 0.88748467, -0.41080698],
                      [-0.19073945, -0.08442789, 0.88753312, -0.41082276],
                      [-0.19052404, -0.08432871, 0.88758153, -0.41083852],
                      [-0.19030862, -0.08422952, 0.88762988, -0.41085426],
                      [-0.19009352, -0.08412972, 0.88767854, -0.41086914],
                      [-0.18987892, -0.08402899, 0.88772773, -0.41088271]])
        },
        'detector_sample_summing': 1,
        'detector_line_summing': 1,
        'focal_length_model': {
            'focal_length': 72.45
        },
        'detector_center': {
            'line': 0.5,
            'sample': 2048.0
        },
        'starting_detector_line': 0,
        'starting_detector_sample': 1,
        'focal2pixel_lines': [0, -142.85714285714286, 0],
        'focal2pixel_samples': [0, 0, -142.85714285714286],
        'optical_distortion': {
            'kaguyatc': {
                'x':
                [-0.0009649900000000001, 0.00098441, 8.5773e-06, -3.7438e-06],
                'y':
                [-0.0013796, 1.3502e-05, 2.7251e-06, -6.193800000000001e-06]
            }
        },
        'image_lines': 400,
        'image_samples': 3208,
        'name_platform': 'SELENE-M',
        'name_sensor': 'Terrain Camera 1',
        'reference_height': {
            'maxheight': 1000,
            'minheight': -1000,
            'unit': 'm'
        },
        'name_model': 'USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL',
        'interpolation_method': 'lagrange',
        'line_scan_rate': [[0.5, -1.300000011920929, 0.006500000000000001]],
        'starting_ephemeris_time': 292234259.82293594,
        'center_ephemeris_time': 292234261.12293595,
        't0_ephemeris': -1.300000011920929,
        'dt_ephemeris': 0.5200000047683716,
        't0_quaternion': -1.300000011920929,
        'dt_quaternion': 0.5200000047683716
    }

    label_file = get_image_label('TC1S2B0_01_06691S820E0465')

    with patch('ale.drivers.selene_drivers.KaguyaTcPds3NaifSpiceDriver.reference_frame', \
                new_callable=PropertyMock) as mock_reference_frame:
        mock_reference_frame.return_value = 'IAU_MOON'
        usgscsm_isd = ale.load(label_file,
                               props={'kernels': test_kernels},
                               formatter='usgscsm')
    print(usgscsm_isd)

    assert compare_dicts(usgscsm_isd, isd) == []
Beispiel #11
0
def test_load(test_kernels):
    isd = {
        'radii': {
            'semimajor': 1737.4,
            'semiminor': 1737.4,
            'unit': 'km'
        },
        'sensor_position': {
            'positions':
            np.array([[195493.28614388, 211984.05137213, -1766966.32185819],
                      [194937.01104181, 211343.39987087, -1767100.47633473],
                      [194380.68920347, 210702.70097122, -1767234.22276254],
                      [193824.32093681, 210061.95495794, -1767367.56104995],
                      [193267.90484827, 209421.16305764, -1767500.49120063],
                      [192711.44397634, 208780.32318594, -1767633.01318365]]),
            'velocities':
            np.array([[-1069.71225785, -1231.97438089, -258.37880523],
                      [-1069.80205939, -1232.06556741, -257.5939851],
                      [-1069.89161639, -1232.15647191, -256.80910187],
                      [-1069.98092881, -1232.24709434, -256.02415587],
                      [-1070.06999666, -1232.33743471, -255.2391471],
                      [-1070.15881991, -1232.42749298, -254.4540759]]),
            'unit':
            'm'
        },
        'sun_position': {
            'positions':
            np.array([[9.50465237e+10, 1.15903815e+11, 3.78729685e+09]]),
            'velocities':
            np.array([[285707.13474515, -232731.15884149, 592.91742112]]),
            'unit':
            'm'
        },
        'sensor_orientation': {
            'quaternions':
            np.array([[-0.19095485, -0.08452708, 0.88748467, -0.41080698],
                      [-0.19073945, -0.08442789, 0.88753312, -0.41082276],
                      [-0.19052404, -0.08432871, 0.88758153, -0.41083852],
                      [-0.19030862, -0.08422952, 0.88762988, -0.41085426],
                      [-0.19009352, -0.08412972, 0.88767854, -0.41086914],
                      [-0.18987892, -0.08402899, 0.88772773, -0.41088271]])
        },
        'detector_sample_summing': 1,
        'detector_line_summing': 1,
        'focal_length_model': {
            'focal_length': 72.45
        },
        'detector_center': {
            'line': 0.5,
            'sample': 2048.0
        },
        'starting_detector_line': 0,
        'starting_detector_sample': 1,
        'focal2pixel_lines': [0, -142.85714285714286, 0],
        'focal2pixel_samples': [0, 0, -142.85714285714286],
        'optical_distortion': {
            'kaguyatc': {
                'x':
                [-0.0009649900000000001, 0.00098441, 8.5773e-06, -3.7438e-06],
                'y':
                [-0.0013796, 1.3502e-05, 2.7251e-06, -6.193800000000001e-06]
            }
        },
        'image_lines': 400,
        'image_samples': 3208,
        'name_platform': 'SELENE-M',
        'name_sensor': 'Terrain Camera 1',
        'reference_height': {
            'maxheight': 1000,
            'minheight': -1000,
            'unit': 'm'
        },
        'name_model': 'USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL',
        'interpolation_method': 'lagrange',
        'line_scan_rate': [[0.5, -1.300000011920929, 0.006500000000000001]],
        'starting_ephemeris_time': 292234259.82293594,
        'center_ephemeris_time': 292234261.12293595,
        't0_ephemeris': -1.300000011920929,
        'dt_ephemeris': 0.5200000047683716,
        't0_quaternion': -1.300000011920929,
        'dt_quaternion': 0.5200000047683716
    }

    label_file = get_image_label('TC1S2B0_01_06691S820E0465')

    with patch('ale.drivers.selene_drivers.KaguyaTcPds3NaifSpiceDriver.reference_frame', \
                new_callable=PropertyMock) as mock_reference_frame:
        mock_reference_frame.return_value = 'IAU_MOON'
        usgscsm_isd = ale.load(label_file,
                               props={'kernels': test_kernels},
                               formatter='usgscsm')
    print(usgscsm_isd)

    assert compare_dicts(usgscsm_isd, isd) == []
Beispiel #12
0
def test_dawn_load(test_kernels, usgscsm_compare_dict):
    label_file = get_image_label('FC21A0038582_15170161546F6F')
    usgscsm_isd = ale.load(label_file,
                           props={'kernels': test_kernels},
                           formatter='usgscsm')
    assert compare_dicts(usgscsm_isd, usgscsm_compare_dict) == []