def test_assignment_by_sum(self): np_array_1 = _np.ones(3) gs_array_1 = gs.ones_like(gs.array(np_array_1)) np_array_1[2] += 1.5 gs_result = gs.assignment_by_sum(gs_array_1, 1.5, 2) self.assertAllCloseToNp(gs_result, np_array_1) np_array_1_list = _np.ones(3) gs_array_1_list = gs.ones_like(gs.array(np_array_1_list)) indices = [1, 2] np_array_1_list[indices] += 1.5 gs_result = gs.assignment_by_sum(gs_array_1_list, 1.5, indices) self.assertAllCloseToNp(gs_result, np_array_1) np_array_2 = _np.zeros((3, 2)) gs_array_2 = gs.zeros_like(gs.array(np_array_2)) np_array_2[0, :] += 1 gs_result = gs.assignment_by_sum(gs_array_2, 1, 0, axis=0) self.assertAllCloseToNp(gs_result, np_array_2) np_array_3 = _np.zeros((3, 3)) gs_array_3 = gs.zeros_like(gs.array(np_array_3)) np_array_3[0, 1] += 1 gs_result = gs.assignment_by_sum(gs_array_3, 1, (0, 1)) self.assertAllCloseToNp(gs_result, np_array_3) np_array_4 = _np.zeros((3, 3, 2)) gs_array_4 = gs.zeros_like(gs.array(np_array_4)) np_array_4[0, :, 1] += 1 gs_result = gs.assignment_by_sum(gs_array_4, 1, (0, 1), axis=1) self.assertAllCloseToNp(gs_result, np_array_4) np_array_4_list = _np.zeros((3, 3, 2)) gs_array_4_list = gs.zeros_like(gs.array(np_array_4_list)) np_array_4_list[(0, 1), :, (1, 1)] += 1 gs_result = gs.assignment_by_sum( gs_array_4_list, 1, [(0, 1), (1, 1)], axis=1) self.assertAllCloseToNp(gs_result, np_array_4)
def test_assignment_by_sum(self): gs_array_1 = gs.ones(3) self.assertRaises(ValueError, gs.assignment_by_sum, gs_array_1, [.1, 2., 1.], [0, 1]) np_array_1 = _np.ones(3) gs_array_1 = gs.ones_like(gs.array(np_array_1)) np_array_1[2] += 1.5 gs_result = gs.assignment_by_sum(gs_array_1, 1.5, 2) self.assertAllCloseToNp(gs_result, np_array_1) gs_result_list = gs.assignment_by_sum(gs_array_1, [2., 1.5], [0, 2]) np_array_1[0] += 2. self.assertAllCloseToNp(gs_result_list, np_array_1) np_array_1_list = _np.ones(3) gs_array_1_list = gs.ones_like(gs.array(np_array_1_list)) indices = [1, 2] np_array_1_list[indices] += 1.5 gs_result = gs.assignment_by_sum(gs_array_1_list, 1.5, indices) self.assertAllCloseToNp(gs_result, np_array_1_list) np_array_2 = _np.zeros((3, 2)) gs_array_2 = gs.zeros_like(gs.array(np_array_2)) np_array_2[0, :] += 1 gs_result = gs.assignment_by_sum(gs_array_2, 1, 0, axis=1) self.assertAllCloseToNp(gs_result, np_array_2) np_array_3 = _np.zeros((3, 3)) gs_array_3 = gs.zeros_like(gs.array(np_array_3)) np_array_3[0, 1] += 1 gs_result = gs.assignment_by_sum(gs_array_3, 1, (0, 1)) self.assertAllCloseToNp(gs_result, np_array_3) np_array_4 = _np.zeros((3, 3, 2)) gs_array_4 = gs.zeros_like(gs.array(np_array_4)) np_array_4[0, :, 1] += 1 gs_result = gs.assignment_by_sum(gs_array_4, 1, (0, 1), axis=1) self.assertAllCloseToNp(gs_result, np_array_4) np_array_4_list = _np.zeros((3, 3, 2)) gs_array_4_list = gs.zeros_like(gs.array(np_array_4_list)) np_array_4_list[(0, 1), :, (1, 1)] += 1 gs_result = gs.assignment_by_sum(gs_array_4_list, 1, [(0, 1), (1, 1)], axis=1) self.assertAllCloseToNp(gs_result, np_array_4_list) n_samples = 3 theta = _np.array([0.1, 0.2, 0.3, 0.4, 5.5]) phi = _np.array([0.11, 0.22, 0.33, 0.44, -.55]) np_array = _np.ones((n_samples, 5, 4)) gs_array = gs.array(np_array) gs_array = gs.assignment_by_sum(gs_array, gs.cos(theta) * gs.cos(phi), (0, 0), axis=1) gs_array = gs.assignment_by_sum(gs_array, -gs.sin(theta) * gs.sin(phi), (0, 1), axis=1) np_array[0, :, 0] += _np.cos(theta) * _np.cos(phi) np_array[0, :, 1] -= _np.sin(theta) * _np.sin(phi) # TODO (ninamiolane): This test fails 15% of the time, # when gs and _np computations are in the reverse order. # We should investigate this. self.assertAllCloseToNp(gs_array, np_array) np_array = _np.array([[22., 55.], [33., 88.], [77., 99.]]) gs_array = gs.array([[22., 55.], [33., 88.], [77., 99.]]) np_mask = _np.array([[False, False], [False, True], [True, True]]) gs_mask = gs.array([[False, False], [False, True], [True, True]]) np_array[np_mask] += _np.zeros_like(np_array[np_mask]) np_array[~np_mask] += 4 * np_array[~np_mask] np_result = np_array values_mask = gs.zeros_like(gs_array[gs_mask]) gs_result = gs.assignment_by_sum(gs_array, values_mask, gs_mask) gs_result = gs.assignment_by_sum(gs_result, 4 * gs_array[~gs_mask], ~gs_mask) self.assertAllCloseToNp(gs_result, np_result)