Exemple #1
0
 def test_radius_count_intersect(self, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         b = Bitstring()
         cnt1 = sdm.thread_radius_count_intersect(a, b)
         cnt2 = sdm.thread_radius_count_intersect(a, b)
         self.assertEqual(cnt1, cnt2)
     sdm.free()
Exemple #2
0
 def test_average_random(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = Bitstring()
         c = Bitstring.average(a, b)
         d0 = a.distance_to(b)
         d1 = c.distance_to(a)
         d2 = c.distance_to(b)
         self.assertEqual(d1+d2, d0)
         self.assertTrue(d1 < d0)
         self.assertTrue(d2 < d0)
         self.assertTrue(abs(d1-d2) <= 1)
Exemple #3
0
def sample_radius(rounds=1, verbose=0):
    if verbose > 0:
        print 'Initializing SDM'
    sdm.initialize()
    dimension = sdm.get_dimension()
    v = []
    for i in xrange(rounds):
        if verbose > 0:
            print 'Round #%d' % (i + 1)
        addr = Bitstring()

        dist = sdm.distance(addr)

        if verbose > 0:
            print '  Processing results'
        w = [0] * (dimension + 1)
        for d in dist:
            w[d] += 1
        u = [0] * (dimension + 1)
        for d, n in enumerate(w):
            for j in range(d, dimension + 1):
                u[j] += n
        v.append(u)
    sdm.free()
    return v
Exemple #4
0
 def test_average_same(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = a.copy()
         c = Bitstring.average(a, b)
         self.assertEqual(c.distance_to(a), 0)
         self.assertEqual(c.distance_to(b), 0)
Exemple #5
0
 def test_mean_distance(self, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         arr = array(sdm.thread_distance(a))
         self.assertTrue(abs(arr.mean() - 500) <= 1.5)
     sdm.free()
Exemple #6
0
 def test_readwrite_overflow(self, qty=1000):
     a = Hardlocation()
     b = Bitstring()
     for i in range(qty):
         a.write(b)
     c = a.read()
     self.assertEqual(b.distance_to(c), 0)
Exemple #7
0
 def test_writeread(self, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         sdm.thread_write(a, a)
         b = sdm.thread_read(a)
         self.assertEqual(a.distance_to(b), 0)
     sdm.free()
Exemple #8
0
def write_random(qty, use_threads=True):
    w = sdm.write if not use_threads else sdm.thread_write
    t0 = time()
    for i in range(qty):
        a = Bitstring()
        print '#%d' % i, w(a, a)
    t1 = time()
    print 'Time:', t1 - t0, 'seconds'
Exemple #9
0
 def test_write_adder(self, qty=1000):
     for i in range(qty):
         a = Hardlocation()
         b = Bitstring()
         a.write(b)
         self.assertEqual([ b.bitsign(i) for i in xrange(sdm.get_dimension()) ], a.adder)
         a.write(b)
         self.assertEqual([ 2*b.bitsign(i) for i in xrange(sdm.get_dimension()) ], a.adder)
Exemple #10
0
 def test_random_swap(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = a.copy()
         self.assertEqual(a.distance_to(b), 0)
         dist = random.randint(0, sdm.get_dimension())
         b.bitrandomswap(dist)
         self.assertEqual(a.distance_to(b), dist)
Exemple #11
0
def sample():
    print 'Initializing SDM'
    sdm.initialize()
    dimension = sdm.get_dimension()
    addr = Bitstring()
    dist = sdm.distance(addr)
    sdm.free()
    return dist
Exemple #12
0
    def test_bitset(self):
        dim = sdm.get_dimension()
        a = Bitstring(zero=True)
        for i in range(dim):
            a.bitset(i)

            s = str(a)
            s1 = sum([ 1 for x in s[:dim-i-1] if x == '0' ])
            s2 = sum([ 1 for x in s[-i-1:] if x == '1' ])
            self.assertEqual(s1+s2, dim)
Exemple #13
0
 def test_writereadnear(self, distance=50, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         sdm.thread_write(a, a)
         b = a.copy()
         b.bitrandomswap(distance)
         c = sdm.thread_read(b)
         self.assertEqual(a.distance_to(c), 0)
     sdm.free()
Exemple #14
0
def test_uniform_distribution(qty=10000):
    n = sdm.get_dimension()
    v = [0] * n
    for i in xrange(qty):
        a = Bitstring()
        for j in range(n):
            v[j] += a.bitsign(j)
    import pylab
    pylab.hist(v, bins=15)
    return v
Exemple #15
0
def table_7_1():
    n = sdm.get_dimension()
    a = Bitstring()
    v = []
    for i in range(550):
        b = a.copy()
        b.bitrandomswap(i)
        v.append([i, sdm.thread_radius_count_intersect(a, b)])
        print i
        sys.stdout.flush()
    return v
Exemple #16
0
    def test_readwrite_swap(self, qty=1000):
        for i in range(qty):
            a = Hardlocation()
            b = Bitstring()
            a.write(b)
            c = a.read()
            self.assertEqual(b.distance_to(c), 0)

            b.bitswap(0)
            a.write(b)
            a.write(b)
            c = a.read()
            b.bitswap(0)

            self.assertEqual(b.distance_to(c), 1)
            c.bitswap(0)
            self.assertEqual(b.distance_to(c), 0)
Exemple #17
0
 def test_distance_random(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = Bitstring()
         dist = sum([ 1 for x, y in zip(str(a), str(b)) if x != y ])
         self.assertEqual(Bitstring.distance(a, b), dist)
Exemple #18
0
 def test_distance_zero(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         self.assertEqual(Bitstring.distance(a, a), 0)