def test_setitem_array(self): arr = LabelArray(self.strs, missing_value=None) orig_arr = arr.copy() # Write a row. self.assertFalse( (arr[0] == arr[1]).all(), "This test doesn't test anything because rows 0" " and 1 are already equal!" ) arr[0] = arr[1] for i in range(arr.shape[1]): self.assertEqual(arr[0, i], arr[1, i]) # Write a column. self.assertFalse( (arr[:, 0] == arr[:, 1]).all(), "This test doesn't test anything because columns 0" " and 1 are already equal!" ) arr[:, 0] = arr[:, 1] for i in range(arr.shape[0]): self.assertEqual(arr[i, 0], arr[i, 1]) # Write the whole array. arr[:] = orig_arr check_arrays(arr, orig_arr)
def test_object1darrayoverwrite(self): pairs = [u + l for u, l in product(ascii_uppercase, ascii_lowercase)] categories = pairs + ["~" + c for c in pairs] baseline = LabelArray( np.array([["".join((r, c)) for c in "abc"] for r in ascii_uppercase]), None, categories, ) full_expected = baseline.copy() def flip(cs): if cs is None: return None if cs[0] != "~": return "~" + cs return cs def make_overwrite(fr, lr, fc, lc): fr, lr, fc, lc = map(ord, (fr, lr, fc, lc)) fr -= ord("A") lr -= ord("A") fc -= ord("a") lc -= ord("a") return Object1DArrayOverwrite( fr, lr, fc, lc, baseline[fr : lr + 1, fc].map(flip), ) overwrites = { 3: [make_overwrite("A", "B", "a", "a")], 4: [make_overwrite("A", "C", "b", "c")], 5: [make_overwrite("D", "D", "a", "b")], } it = AdjustedArray(baseline, overwrites, None).traverse(3) window = next(it) expected = full_expected[:3] check_arrays(window, expected) window = next(it) full_expected[0:2, 0] = LabelArray(["~Aa", "~Ba"], None) expected = full_expected[1:4] check_arrays(window, expected) window = next(it) full_expected[0:3, 1:3] = LabelArray( [["~Ab", "~Ac"], ["~Bb", "~Bc"], ["~Cb", "~Cb"]], None ) expected = full_expected[2:5] check_arrays(window, expected) window = next(it) full_expected[3, :2] = "~Da" expected = full_expected[3:6] check_arrays(window, expected)
def test_object1darrayoverwrite(self): pairs = [u + l for u, l in product(ascii_uppercase, ascii_lowercase)] categories = pairs + ['~' + c for c in pairs] baseline = LabelArray( array([[''.join((r, c)) for c in 'abc'] for r in ascii_uppercase]), None, categories, ) full_expected = baseline.copy() def flip(cs): if cs is None: return None if cs[0] != '~': return '~' + cs return cs def make_overwrite(fr, lr, fc, lc): fr, lr, fc, lc = map(ord, (fr, lr, fc, lc)) fr -= ord('A') lr -= ord('A') fc -= ord('a') lc -= ord('a') return Object1DArrayOverwrite( fr, lr, fc, lc, baseline[fr:lr + 1, fc].map(flip), ) overwrites = { 3: [make_overwrite('A', 'B', 'a', 'a')], 4: [make_overwrite('A', 'C', 'b', 'c')], 5: [make_overwrite('D', 'D', 'a', 'b')], } it = AdjustedArray(baseline, overwrites, None).traverse(3) window = next(it) expected = full_expected[:3] check_arrays(window, expected) window = next(it) full_expected[0:2, 0] = LabelArray(['~Aa', '~Ba'], None) expected = full_expected[1:4] check_arrays(window, expected) window = next(it) full_expected[0:3, 1:3] = LabelArray( [['~Ab', '~Ac'], ['~Bb', '~Bc'], ['~Cb', '~Cb']], None) expected = full_expected[2:5] check_arrays(window, expected) window = next(it) full_expected[3, :2] = '~Da' expected = full_expected[3:6] check_arrays(window, expected)
def test_object1darrayoverwrite(self): pairs = [u + l for u, l in product(ascii_uppercase, ascii_lowercase)] categories = pairs + ['~' + c for c in pairs] baseline = LabelArray( array([[''.join((r, c)) for c in 'abc'] for r in ascii_uppercase]), None, categories, ) full_expected = baseline.copy() def flip(cs): if cs is None: return None if cs[0] != '~': return '~' + cs return cs def make_overwrite(fr, lr, fc, lc): fr, lr, fc, lc = map(ord, (fr, lr, fc, lc)) fr -= ord('A') lr -= ord('A') fc -= ord('a') lc -= ord('a') return Object1DArrayOverwrite( fr, lr, fc, lc, baseline[fr:lr + 1, fc].map(flip), ) overwrites = { 3: [make_overwrite('A', 'B', 'a', 'a')], 4: [make_overwrite('A', 'C', 'b', 'c')], 5: [make_overwrite('D', 'D', 'a', 'b')], } it = AdjustedArray(baseline, overwrites, None).traverse(3) window = next(it) expected = full_expected[:3] check_arrays(window, expected) window = next(it) full_expected[0:2, 0] = LabelArray(['~Aa', '~Ba'], None) expected = full_expected[1:4] check_arrays(window, expected) window = next(it) full_expected[0:3, 1:3] = LabelArray([['~Ab', '~Ac'], ['~Bb', '~Bc'], ['~Cb', '~Cb']], None) expected = full_expected[2:5] check_arrays(window, expected) window = next(it) full_expected[3, :2] = '~Da' expected = full_expected[3:6] check_arrays(window, expected)