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)
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]) == []
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]) == []
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) == []
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) == []
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) == []
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)
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'
def test_load_invalid_label(): with pytest.raises(Exception): ale.load('Not a label path')
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) == []
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) == []
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) == []