def testCrossTanimoto(self): v1 = BitVect.SparseBitVect(10) v1[0] = 1 v1[2] = 1 v1[6] = 1 v2 = BitVect.BitVect(10) v2[0] = 1 v2[3] = 1 v2[6] = 1 assert v1.TanimotoSimilarity(v2) == 0.5, 'TanimotoSimilarity failed' assert v2.TanimotoSimilarity(v1) == 0.5, 'TanimotoSimilarity failed' assert v1.TanimotoSimilarity(v1) == 1.0, 'TanimotoSimilarity failed' assert v2.TanimotoSimilarity(v2) == 1.0, 'TanimotoSimilarity failed'
def testSparseBitOps(self): """ test bit operations on SparseBitVects """ v1 = BitVect.SparseBitVect(10) v1[0] = 1 v1[2] = 1 v1[6] = 1 v2 = BitVect.SparseBitVect(10) v2[0] = 1 v2[3] = 1 v2[6] = 1 assert v1 & v2 == [0, 6], 'binary & failed' assert v1 | v2 == [0, 2, 3, 6], 'binary | failed' assert v1 ^ v2 == [2, 3], 'binary ^ failed'
def testCrossEuclid(self): v1 = BitVect.BitVect(10) v1[0] = 1 v1[2] = 1 v1[6] = 1 v2 = BitVect.SparseBitVect(10) v2[0] = 1 v2[3] = 1 v2[6] = 1 assert abs(v1.EuclideanDistance(v2) - .14142) < .0001, 'EuclideanDistance failed' assert abs(v2.EuclideanDistance(v1) - .14142) < .0001, 'EuclideanDistance failed' assert v1.EuclideanDistance(v1) == 0.0, 'EuclideanDistance failed' assert v2.EuclideanDistance(v2) == 0.0, 'EuclideanDistance failed'
def testSparseBitGet(self): """ test operations to get sparse bits """ v = BitVect.BitVect(10) v[0] = 1 v[2] = 1 v[6] = 1 assert len(v) == 10, 'len(SparseBitVect) failed' assert v.NumOnBits() == 3, 'NumOnBits failed' assert v.GetOnBits() == [0, 2, 6], 'GetOnBits failed' assert v.GetOnBits(reverse=1) == [6, 2, 0], 'GetOnBits(reverse) failed'
def testSparseIdx(self): """ test indexing into SparseBitVects """ v = BitVect.SparseBitVect(10) ok = 1 try: v[0] = 1 v[2] = 1 except: ok = 0 assert ok, 'setting bits failed' try: v[10] = 1 except: ok = 1 else: ok = 0 assert ok, 'setting high bit should have failed' try: v[-1] = 1 except: ok = 1 else: ok = 0 assert ok, 'setting negative bit should have failed' assert v[0] == 1, 'bad bit' assert v[1] == 0, 'bad bit' assert v[2] == 1, 'bad bit' try: foo = v[10] except: ok = 1 else: ok = 0 assert ok, 'getting high bit should have failed' try: foo = v[-1] except: ok = 1 else: ok = 0 assert ok, 'getting negative bit should have failed'