def test_quadratic_model(): m = QuadraticModel() w = SimpleWrapper(m) h = w.fit({'initial_epoch': 0, 'epochs': 5}) compare_dicts( h, { 'epochs': [e for e in range(0, 3)], 'acc': [4, 1, 0, 1, 4], 'loss': [-4, -1, 0, -1, -4], 'val_acc': [4.5, 1.5, 0.5, 1.5, 4.5], 'val_loss': [-4.5, -1.5, -0.5, -1.5, -4.5] })
def test_load(test_kernels, label_type, image): label_file = get_image_label(image, label_type) isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, image_dict[image]) == []
def test_newhorizons_load(test_kernels): label_file = get_image_label("lor_0034974380_0x630_sci_1", "isis") isd_str = ale.loads(label_file, props={'kernels': test_kernels}) isd_obj = json.loads(isd_str) compare_dict = get_isd('newhorizons') print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, 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_load_minirf(test_kernels): label_file = get_image_label('03821_16N196_S1', 'isis3') # isd_str = ale.loads(label_file, props={'kernels': test_kernels['03821_16N196_S1']}, formatter='usgscsm', verbose=True) isd_str = ale.loads(label_file, props={'kernels': test_kernels['03821_16N196_S1']}, verbose=True) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, image_dict['03821_16N196_S1']) == []
def test_fit(keras_model): good_results = { 'acc': [-76, -96, -28], 'val_loss': [4.75, 5.75, 6.75], 'loss': [4.5, 5.5, 6.5], 'val_acc': [4.25, 5.25, 6.25], 'epochs': [4, 5, 6] } m = SimpleWrapper(keras_model) obs = m.fit(fit_args={'initial_epoch': 4, 'epochs': 7}) print('result:\n{}'.format(obs)) print('should be:\n{}'.format(good_results)) compare_dicts(obs, good_results)
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, label_type, formatter, image): label_file = get_image_label(image, label_type) usgscsm_isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}, formatter=formatter) usgscsm_isd_obj = json.loads(usgscsm_isd_str) print(json.dumps(usgscsm_isd_obj, indent=4)) assert compare_dicts(usgscsm_isd_obj, 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_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_mro_load(test_kernels, label_type): label_file = get_image_label('JNCR_2016240_01M06152_V01', label_type) isd_str = ale.loads(label_file, props={'kernels': test_kernels}) isd_obj = json.loads(isd_str) compare_dict = get_isd('juno') print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == []
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(test_kernels): label_file = get_image_label('FC21A0038582_15170161546F6F') compare_dict = get_isd("dawnfc") isd_str = ale.loads(label_file, props={'kernels': test_kernels}) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == []
def test_cassis_load(test_kernels): label_file = get_image_label( "CAS-MCO-2016-11-26T22.32.14.582-RED-01000-B1", "isis") isd_str = ale.loads(label_file, props={'kernels': test_kernels}) isd_obj = json.loads(isd_str) compare_dict = get_isd('cassis') print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == []
def test_load_pds(test_kernels): label_file = get_image_label("N1702360370_1") compare_dict = get_isd("cassiniiss") isd_str = ale.loads(label_file, props={'kernels': test_kernels}) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == []
def test_mro_load(test_kernels, label_type, formatter, isis_compare_dict): label_file = get_image_label('JNCR_2016240_01M06152_V01', label_type) usgscsm_isd_str = ale.loads(label_file, props={'kernels': test_kernels}, formatter=formatter) usgscsm_isd_obj = json.loads(usgscsm_isd_str) print(json.dumps(usgscsm_isd_obj, indent=4)) assert compare_dicts(usgscsm_isd_obj, isis_compare_dict) == []
def test_mro_load(test_kernels, label_type, formatter, usgscsm_compare_dict, isis_compare_dict): label_file = get_image_label('B10_013341_1010_XN_79S172W', label_type) usgscsm_isd_str = ale.loads(label_file, props={'kernels': test_kernels}, formatter=formatter) usgscsm_isd_obj = json.loads(usgscsm_isd_str) print(json.dumps(usgscsm_isd_obj, indent=4)) if formatter=='usgscsm': # Check to change the line based on ISIS vs PDS3 # This is due to a processing step in mroctx2isis that removes samples # based on some flags on the label if label_type == 'isis3': usgscsm_compare_dict['image_samples'] = 5000 assert compare_dicts(usgscsm_isd_obj, usgscsm_compare_dict) == [] else: assert compare_dicts(usgscsm_isd_obj, isis_compare_dict) == []
def test_load(test_kernels, label_type, image): label_file = get_image_label(image, label_type) print(test_kernels) usgscsm_isd_str = ale.loads(label_file, props={'kernels': test_kernels}, verbose=True) usgscsm_isd_obj = json.loads(usgscsm_isd_str) print(json.dumps(usgscsm_isd_obj, indent=2)) assert compare_dicts(usgscsm_isd_obj, image_dict[image]) == []
def test_hayabusa_load(test_kernels, label_type): label_file = get_image_label('hyb2_onc_20151203_084458_w2f_l2a', label_type) isd_str = ale.loads(label_file, props={'kernels': test_kernels}, verbose=False) isd_obj = json.loads(isd_str) compare_dict = get_isd('hayabusa2') print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == []
def test_mro_load(test_kernels, label_type): label_file = get_image_label('B10_013341_1010_XN_79S172W', label_type) isd_str = ale.loads(label_file, props={'kernels': test_kernels}) isd_obj = json.loads(isd_str) compare_isd = get_isd('ctx') if label_type == 'isis3': compare_isd['image_samples'] = 5000 assert compare_dicts(isd_obj, compare_isd) == []
def test_galileo_load(test_kernels, label_type, kernel_type): label_file = get_image_label('E6I0032', label_type) if label_type == 'isis3' and kernel_type == 'isis': label_file = get_image('E6I0032') isd_str = ale.loads(label_file) compare_isd = get_isd('galileossi_isis') else: isd_str = ale.loads(label_file, props={'kernels': test_kernels}) compare_isd = get_isd('galileossi') isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_isd) == []
def test_load(test_kernels, label_type, image, kernel_type): if (kernel_type == "naif"): label_file = get_image_label(image, label_type) isd_str = ale.loads(label_file, props={'kernels': test_kernels}) compare_isd = image_dict[image] else: label_file = get_image(image) isd_str = ale.loads(label_file) compare_isd = get_isd("messmdis_isis") isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_isd) == []
def test_load_isis(): label_file = get_image_label("N1702360370_1", label_type="isis3") compare_dict = get_isd("cassiniiss_isis") def read_detatched_table(table_label, cube): return get_table_data("N1702360370_1", table_label["Name"]) with patch('ale.base.data_isis.read_table_data', side_effect=read_detatched_table): isd_str = ale.loads(label_file) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == []
def test_viking1_load(test_kernels, label_type, formatter, image, kernel_type): if kernel_type == "naif": label_file = get_image_label(image, label_type) isis_isd = ale.loads(label_file, props={'kernels': test_kernels[image]}, formatter=formatter) compare_dict = image_dict[image][formatter] else: label_file = get_image(image) isis_isd = ale.loads(label_file, verbose=True) isd_name = image + '_isis' compare_dict = get_isd(isd_name) print(isis_isd) assert compare_dicts(json.loads(isis_isd), compare_dict) == []
def test_linear_state_based_metrics(): m = LinearModel() w = SimpleWrapper(m) assert w != m # History should reflect the change in metrics over for a window # specified by the epoch range but continuing from where the model # state was as of the last call to fit(). assert w.eval({}) == (0., 0.) h = w.fit({'initial_epoch': 0, 'epochs': 3}) compare_dicts( h, { 'epochs': [e for e in range(0, 3)], 'acc': [1, 2, 3], 'loss': [-1, -2, -3], 'val_acc': [1.5, 2.5, 3.5], 'val_loss': [-1.5, -2.5, -3.5] }) # Run for a few more epochs h = w.fit({'initial_epoch': 3, 'epochs': 5}) compare_dicts( h, { 'epochs': [e for e in range(3, 5)], 'acc': [4, 5], 'loss': [-4, -5], 'val_acc': [4.5, 5.5], 'val_loss': [-4.5, -5.5] }) # And now run for a few more, but reset the epoch range -- the key here # is that the metrics should continue relative to the previous state, # not the epoch range h = w.fit({'initial_epoch': 1, 'epochs': 3}) compare_dicts( h, { 'epochs': [e for e in range(1, 4)], 'acc': [6, 7, 8], 'loss': [-6, -7, -8], 'val_acc': [6.5, 7.5, 8.5], 'val_loss': [-6.5, -7.5, -8.5] })
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) == []
def test_load_isis(test_kernels, label_type, formatter, image): label_file = get_image_label(image, label_type) isis_isd = ale.loads(label_file, props={'kernels': test_kernels[image]}, formatter=formatter, verbose=True) isis_isd_obj = json.loads(isis_isd) print(json.dumps(isis_isd_obj, indent=4)) assert compare_dicts(isis_isd_obj, image_dict[image][formatter]) == []
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_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_linear_copy(): from copy import copy m = LinearModel() w = SimpleWrapper(m) w_copy = copy(w) assert w != w_copy assert w._model != w_copy._model assert w.eval({}) == w_copy.eval({}) # Move original model ahead 3 epochs h = w.fit({'initial_epoch': 0, 'epochs': 3}) compare_dicts( h, { 'epochs': [e for e in range(0, 3)], 'acc': [1, 2, 3], 'loss': [-1, -2, -3], 'val_acc': [1.5, 2.5, 3.5], 'val_loss': [-1.5, -2.5, -3.5] }) assert w.eval({}) == (-3, 3) assert w.eval({}) != w_copy.eval({}) # Move copy ahead 2 epochs h = w_copy.fit({'initial_epoch': 1, 'epochs': 3}) compare_dicts( h, { 'epochs': [e for e in range(1, 3)], 'acc': [1, 2], 'loss': [-1, -2], 'val_acc': [1.5, 2.5], 'val_loss': [-1.5, -2.5] }) assert w_copy.eval({}) == (-2, 2) assert w.eval({}) != w_copy.eval({}) # Move original ahead 1 epochs h = w.fit({'initial_epoch': 3, 'epochs': 4}) compare_dicts( h, { 'epochs': [e for e in range(3, 4)], 'acc': [4], 'loss': [-4], 'val_acc': [4.5], 'val_loss': [-4.5] }) assert w.eval({}) == (-4, 4) assert w.eval({}) != w_copy.eval({}) # Move copy ahead 2 epochs h = w_copy.fit({'initial_epoch': 3, 'epochs': 5}) compare_dicts( h, { 'epochs': [e for e in range(3, 5)], 'acc': [3, 4], 'loss': [-3, -4], 'val_acc': [3.5, 4.5], 'val_loss': [-3.5, -4.5] }) assert w_copy.eval({}) == (-4, 4) assert w.eval({}) == w_copy.eval({})