Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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