def test_dual_mean_of_difference(self): # MEAN(B - A) and MEAN(C - A) shape = (500, 30, 40) size = np.prod(shape) raw_data = np.linspace(0, 1, num=size).reshape(shape) a_counter = AccessCounter(raw_data) a_array = biggus.NumpyArrayAdapter(a_counter) b_counter = AccessCounter(raw_data * 3) b_array = biggus.NumpyArrayAdapter(b_counter) c_counter = AccessCounter(raw_data * 5) c_array = biggus.NumpyArrayAdapter(c_counter) b_sub_a_array = biggus.sub(b_array, a_array) mean_b_sub_a_array = biggus.mean(b_sub_a_array, axis=0) c_sub_a_array = biggus.sub(c_array, a_array) mean_c_sub_a_array = biggus.mean(c_sub_a_array, axis=0) mean_b_sub_a, mean_c_sub_a = biggus.ndarrays( [mean_b_sub_a_array, mean_c_sub_a_array]) # Are the resulting numbers equivalent? np.testing.assert_array_almost_equal(mean_b_sub_a, np.mean(raw_data * 2, axis=0)) np.testing.assert_array_almost_equal(mean_c_sub_a, np.mean(raw_data * 4, axis=0)) # Was the source data read just once? self.assert_counts(a_counter.counts, [1]) self.assert_counts(b_counter.counts, [1]) self.assert_counts(c_counter.counts, [1])
def test_dual_mean_of_difference(self): # MEAN(B - A) and MEAN(C - A) shape = (500, 30, 40) size = np.prod(shape) raw_data = np.linspace(0, 1, num=size).reshape(shape) a_counter = AccessCounter(raw_data) a_array = biggus.NumpyArrayAdapter(a_counter) b_counter = AccessCounter(raw_data * 3) b_array = biggus.NumpyArrayAdapter(b_counter) c_counter = AccessCounter(raw_data * 5) c_array = biggus.NumpyArrayAdapter(c_counter) b_sub_a_array = biggus.sub(b_array, a_array) mean_b_sub_a_array = biggus.mean(b_sub_a_array, axis=0) c_sub_a_array = biggus.sub(c_array, a_array) mean_c_sub_a_array = biggus.mean(c_sub_a_array, axis=0) mean_b_sub_a, mean_c_sub_a = biggus.ndarrays([mean_b_sub_a_array, mean_c_sub_a_array]) # Are the resulting numbers equivalent? np.testing.assert_array_almost_equal(mean_b_sub_a, np.mean(raw_data * 2, axis=0)) np.testing.assert_array_almost_equal(mean_c_sub_a, np.mean(raw_data * 4, axis=0)) # Was the source data read just once? self.assert_counts(a_counter.counts, [1]) self.assert_counts(b_counter.counts, [1]) self.assert_counts(c_counter.counts, [1])
def test_mean_of_a_and_mean_of_difference(self): # MEAN(A) and MEAN(A - B) shape = (500, 30, 40) size = np.prod(shape) raw_data = np.linspace(0, 1, num=size).reshape(shape) a_counter = AccessCounter(raw_data * 3) a_array = biggus.NumpyArrayAdapter(a_counter) b_counter = AccessCounter(raw_data) b_array = biggus.NumpyArrayAdapter(b_counter) sub_array = biggus.sub(a_array, b_array) mean_a_array = biggus.mean(a_array, axis=0) mean_sub_array = biggus.mean(sub_array, axis=0) mean_a, mean_sub = biggus.ndarrays([mean_a_array, mean_sub_array]) # Are the resulting numbers equivalent? np.testing.assert_array_almost_equal(mean_a, np.mean(raw_data * 3, axis=0)) np.testing.assert_array_almost_equal(mean_sub, np.mean(raw_data * 2, axis=0)) # Was the source data read the minimal number of times? # (Allow first slice of A to be read twice because both `mean` # operations use it to to bootstrap their calculations.) self.assert_counts(a_counter.counts[0], [2]) self.assert_counts(a_counter.counts[1:], [1]) self.assert_counts(b_counter.counts, [1])
def test_mean_of_difference(self): shape = (3, 4) size = np.prod(shape) raw_data1 = np.linspace(0.2, 1.0, num=size).reshape(shape) raw_data2 = np.linspace(0.3, 1.5, num=size).reshape(shape) array1 = biggus.NumpyArrayAdapter(raw_data1) array2 = biggus.NumpyArrayAdapter(raw_data2) difference = biggus.sub(array2, array1) mean_difference = biggus.mean(difference, axis=0) # Check the NumPy and biggus numeric values match. result = mean_difference.ndarray() numpy_result = np.mean(raw_data2 - raw_data1, axis=0) np.testing.assert_array_equal(result, numpy_result)
def test_mean_of_difference(self): # MEAN(A - B) shape = (500, 30, 40) size = np.prod(shape) raw_data = np.linspace(0, 1, num=size).reshape(shape) data = AccessCounter(raw_data * 3) a_array = biggus.NumpyArrayAdapter(data) data = AccessCounter(raw_data) b_array = biggus.NumpyArrayAdapter(data) mean_array = biggus.mean(biggus.sub(a_array, b_array), axis=0) mean = mean_array.ndarray() np.testing.assert_array_almost_equal(mean, np.mean(raw_data * 2, axis=0))
def test_sd_and_mean_of_difference(self): # MEAN(A - B) and SD(A - B) shape = (500, 30, 40) size = np.prod(shape) raw_data = np.linspace(0, 1, num=size).reshape(shape) a_counter = AccessCounter(raw_data * 3) a_array = biggus.NumpyArrayAdapter(a_counter) b_counter = AccessCounter(raw_data) b_array = biggus.NumpyArrayAdapter(b_counter) sub_array = biggus.sub(a_array, b_array) mean_array = biggus.mean(sub_array, axis=0) std_array = biggus.std(sub_array, axis=0) mean, std = biggus.ndarrays([mean_array, std_array]) # Are the resulting numbers equivalent? np.testing.assert_array_almost_equal(mean, np.mean(raw_data * 2, axis=0)) np.testing.assert_array_almost_equal(std, np.std(raw_data * 2, axis=0)) # Was the source data read just once? self.assert_counts(a_counter.counts, [1]) self.assert_counts(b_counter.counts, [1])
def test_other_array(self): a = FakeArray([2, 4]) b = FakeArray([2, 4]) r = a - b self.assertIsInstance(r, biggus._Elementwise) self.assertElementwise(r, biggus.sub(a, b))