def test_basic(): items.generate_testitems(2, 3, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', 'c1', 'c2') stats = task.stats assert stats['nb_blocks'] == 8, "incorrect stats: number of blocks" assert stats['nb_triplets'] == 8 assert stats['nb_by_levels'] == 2 task.generate_triplets() f = h5py.File('data.abx', 'r') triplets = f['triplets']['data'][...] by_indexes = f['triplets']['by_index'][...] triplets_block0 = triplets[slice(*by_indexes[0])] triplets_block1 = triplets[slice(*by_indexes[1])] triplets_block0 = get_triplets(f, '0') triplets_block1 = get_triplets(f, '1') triplets = np.array([[0, 1, 2], [1, 0, 3], [2, 3, 0], [3, 2, 1]]) assert tables_equivalent(triplets, triplets_block0), error_triplets assert tables_equivalent(triplets, triplets_block1), error_triplets pairs = [2, 6, 7, 3, 8, 12, 13, 9] pairs_block0 = get_pairs(f, '0') pairs_block1 = get_pairs(f, '1') assert (set(pairs) == set(pairs_block0[:, 0])), error_pairs assert (set(pairs) == set(pairs_block1[:, 0])), error_pairs finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_multiple_across(): items.generate_testitems(2, 3, name='data.item') try: with warnings.catch_warnings(): warnings.simplefilter("ignore") task = ABXpy.task.Task('data.item', 'c0', ['c1', 'c2']) stats = task.stats assert stats['nb_blocks'] == 8 assert stats['nb_triplets'] == 8 assert stats['nb_by_levels'] == 1 task.generate_triplets() f = h5py.File('data.abx', 'r') triplets_block = get_triplets(f, '0') triplets = np.array([[0, 1, 6], [1, 0, 7], [2, 3, 4], [3, 2, 5], [4, 5, 2], [5, 4, 3], [6, 7, 0], [7, 6, 1]]) assert tables_equivalent(triplets, triplets_block) finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_filter(): items.generate_testitems(2, 4, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', 'c1', 'c2', filters=["[attr == 0 for attr in c3]"]) stats = task.stats assert stats['nb_blocks'] == 8, "incorrect stats: number of blocks" assert stats['nb_triplets'] == 8 assert stats['nb_by_levels'] == 2 task.generate_triplets(output='data.abx') f = h5py.File('data.abx', 'r') triplets_block0 = get_triplets(f, '0') triplets_block1 = get_triplets(f, '1') triplets = np.array([[0, 1, 2], [1, 0, 3], [2, 3, 0], [3, 2, 1]]) assert tables_equivalent(triplets, triplets_block0), error_triplets assert tables_equivalent(triplets, triplets_block1), error_triplets pairs = [2, 6, 7, 3, 8, 12, 13, 9] pairs_block0 = get_pairs(f, '0') pairs_block1 = get_pairs(f, '1') assert (set(pairs) == set(pairs_block0[:, 0])), error_pairs assert (set(pairs) == set(pairs_block1[:, 0])), error_pairs finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_no_across(): items.generate_testitems(2, 3, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', None, 'c2') stats = task.stats assert stats['nb_blocks'] == 8 assert stats['nb_triplets'] == 16 assert stats['nb_by_levels'] == 2 task.generate_triplets() finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_multiple_bys(): items.generate_testitems(3, 4, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', None, ['c1', 'c2', 'c3']) stats = task.stats assert stats['nb_blocks'] == 81 assert stats['nb_triplets'] == 0 assert stats['nb_by_levels'] == 27 task.generate_triplets() finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_sampling_task(): items.generate_testitems(4, 6, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', 'c1', ['c2', 'c3']) print "stats computed" # stats = task.stats task.generate_triplets(sample=0.2) print "first sample" os.remove('data.abx') task.generate_triplets(sample=200) print "second sample" finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_multiple_bys(): items.generate_testitems(3, 4, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', None, ['c1', 'c2', 'c3']) stats = task.stats assert stats['nb_blocks'] == 81 assert stats['nb_triplets'] == 0 assert stats['nb_by_levels'] == 27 with warnings.catch_warnings(): warnings.simplefilter("ignore") task.generate_triplets() finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_filter_on_B(): items.generate_testitems(2, 2, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', filters=["[attr == 0 for attr in c1_B]"]) stats = task.stats assert stats['nb_blocks'] == 4, "incorrect stats: number of blocks" assert stats['nb_triplets'] == 4 assert stats['nb_by_levels'] == 1 task.generate_triplets() f = h5py.File('data.abx', 'r') triplets_block0 = get_triplets(f, '0') triplets = np.array([[0, 1, 2], [1, 0, 3], [2, 1, 0], [3, 0, 1]]) assert tables_equivalent(triplets, triplets_block0), error_triplets finally: try: os.remove('data.abx') os.remove('data.item') except: pass
def test_filter_on_C(): items.generate_testitems(2, 2, name='data.item') try: task = ABXpy.task.Task('data.item', 'c0', filters=["[attr == 0 for attr in c1_X]"]) stats = task.stats assert stats['nb_blocks'] == 4, "incorrect stats: number of blocks" assert stats['nb_triplets'] == 4 assert stats['nb_by_levels'] == 1 task.generate_triplets() f = h5py.File('data.abx', 'r') triplets_block0 = get_triplets(f, '0') triplets = np.array([[2, 1, 0], [2, 3, 0], [3, 0, 1], [3, 2, 1]]) assert tables_equivalent(triplets, triplets_block0), error_triplets finally: try: os.remove('data.abx') os.remove('data.item') except: pass