Loading tests/test_bundle.py +72 −0 Original line number Diff line number Diff line Loading @@ -199,3 +199,75 @@ def test_compute_sigma0_sparse(): "point_1" : (3, 6) } assert bundle.compute_sigma_sparse(V, dX, W_sensors, W_points, W_obs, column_dict) == np.sqrt(7809 / 10) def test_compute_image_weight(): def mock_covar(index_1, index_2): if index_1 != index_2: return 0 return index_1 + 1 sensor = mock.MagicMock(spec=csmapi.RasterGM) sensor.getParameterCovariance = mock_covar params = [mock.MagicMock(), mock.MagicMock(), mock.MagicMock()] params[0].index = 0 params[1].index = 1 params[2].index = 3 np.testing.assert_allclose( bundle.compute_image_weight(sensor, params), [[1, 0, 0], [0, 1/2, 0], [0, 0, 1/4]]) def test_compute_point_weight(control_network): control_network.at[(control_network['id'] == 'bob').idxmax(), 'aprioriCovar'] = np.array([1, 0, 0, 2, 0, 3]) np.testing.assert_allclose( bundle.compute_point_weight(control_network, 'bob'), [[1, 0, 0], [0, 1/2, 0], [0, 0, 1/3]]) def test_update_parameters(control_network, sensors): def mock_getParameterValue(index): return index + 1 params = {} coefficient_columns = {} current_column = 0 for sn, sensor in sensors.items(): sensor.getParameterValue = mock_getParameterValue sensor_params = [] for param_idx in range(6): param_mock = mock.MagicMock() param_mock.index = param_idx sensor_params.append(param_mock) params[sn] = sensor_params coefficient_columns[sn] = (current_column, current_column+6) current_column += 6 for point_id in control_network['id'].unique(): coefficient_columns[point_id] = (current_column, current_column+3) current_column += 3 updates = np.arange(0, current_column) bundle.update_parameters(sensors, params, control_network, updates, coefficient_columns) for sn, sensor in sensors.items(): coeff_start = coefficient_columns[sn][0] for param_idx in range(6): sensor.setParameterValue.assert_any_call( param_idx, param_idx + 1 + coeff_start + param_idx ) for point_id, group in control_network.groupby('id'): coeff_start = coefficient_columns[point_id][0] coeff_end = coefficient_columns[point_id][1] num_measures = len(group) np.testing.assert_allclose( group[['adjustedX', 'adjustedY', 'adjustedZ']].values, np.tile(updates[coeff_start:coeff_end], num_measures).reshape((num_measures,3)) ) Loading
tests/test_bundle.py +72 −0 Original line number Diff line number Diff line Loading @@ -199,3 +199,75 @@ def test_compute_sigma0_sparse(): "point_1" : (3, 6) } assert bundle.compute_sigma_sparse(V, dX, W_sensors, W_points, W_obs, column_dict) == np.sqrt(7809 / 10) def test_compute_image_weight(): def mock_covar(index_1, index_2): if index_1 != index_2: return 0 return index_1 + 1 sensor = mock.MagicMock(spec=csmapi.RasterGM) sensor.getParameterCovariance = mock_covar params = [mock.MagicMock(), mock.MagicMock(), mock.MagicMock()] params[0].index = 0 params[1].index = 1 params[2].index = 3 np.testing.assert_allclose( bundle.compute_image_weight(sensor, params), [[1, 0, 0], [0, 1/2, 0], [0, 0, 1/4]]) def test_compute_point_weight(control_network): control_network.at[(control_network['id'] == 'bob').idxmax(), 'aprioriCovar'] = np.array([1, 0, 0, 2, 0, 3]) np.testing.assert_allclose( bundle.compute_point_weight(control_network, 'bob'), [[1, 0, 0], [0, 1/2, 0], [0, 0, 1/3]]) def test_update_parameters(control_network, sensors): def mock_getParameterValue(index): return index + 1 params = {} coefficient_columns = {} current_column = 0 for sn, sensor in sensors.items(): sensor.getParameterValue = mock_getParameterValue sensor_params = [] for param_idx in range(6): param_mock = mock.MagicMock() param_mock.index = param_idx sensor_params.append(param_mock) params[sn] = sensor_params coefficient_columns[sn] = (current_column, current_column+6) current_column += 6 for point_id in control_network['id'].unique(): coefficient_columns[point_id] = (current_column, current_column+3) current_column += 3 updates = np.arange(0, current_column) bundle.update_parameters(sensors, params, control_network, updates, coefficient_columns) for sn, sensor in sensors.items(): coeff_start = coefficient_columns[sn][0] for param_idx in range(6): sensor.setParameterValue.assert_any_call( param_idx, param_idx + 1 + coeff_start + param_idx ) for point_id, group in control_network.groupby('id'): coeff_start = coefficient_columns[point_id][0] coeff_end = coefficient_columns[point_id][1] num_measures = len(group) np.testing.assert_allclose( group[['adjustedX', 'adjustedY', 'adjustedZ']].values, np.tile(updates[coeff_start:coeff_end], num_measures).reshape((num_measures,3)) )