def test_label_set(): # Creating a LabelSet from an existing list s = LabelSet(['a', 'b', 'e']) # add() s.add('d') s.add('c') s.add('d') eq_(len(s), 5) eq_(s[3], 'd') eq_(s[4], 'c') # index, __contains__, __getitem__, __iter__ eq_(s.index('b'), 1) assert_raises(KeyError, s.index, 'f') assert 'b' in s assert 'q' not in s eq_(s[2], 'e') with assert_raises(IndexError): s[6] eq_(list(s), ['a', 'b', 'e', 'd', 'c']) # Copying generates a distinct LabelSet; __eq__ works s_copy = s.copy() eq_(s, s_copy) s_copy.add('f') eq_(len(s.items), 5) eq_(len(s.indices), 5) # merged s1 = LabelSet(['f', 'b', 'g', 'c']) merged, indices = s.merge(s1) eq_(len(s), 5) eq_(merged, LabelSet(['a', 'b', 'e', 'd', 'c', 'f', 'g'])) eq_(indices, [5, 1, 6, 4])
def test_assoc_constructor(): # Make a nice, normal AssocSpace u = np.asarray([[0, 1, 0.6], [1, 0, 0.8]]) sigma = np.asarray([0.5, 0.3, 0.2]) labels = LabelSet(['A', 'B']) assoc = AssocSpace(u, sigma, labels) eq_(assoc.k, 3) assert 'assoc' not in assoc.__dict__ # Test some error conditions with assert_raises(ValueError): AssocSpace(u, np.asarray([0.0, -0.2, -0.4]), labels) with assert_raises(ValueError): AssocSpace(u, np.asarray([0.6, 0.4]), labels) with assert_raises(ValueError): AssocSpace(u, np.asarray([0.6, 0.7, 0.2]), labels) # Test assoc hinting assoc_matrix = assoc.assoc.copy() assoc_hinted = AssocSpace(u, sigma, labels, assoc=assoc_matrix) assert np.allclose(assoc_hinted.row_named('A'), assoc.row_named('A'))