def test_ec(k=11, m=5, w=4, iters=1000): code = CauchyEC(k, m, bitfield=w) buffers = [IOBuffer().as_numpy_byte_array() for i in xrange(k+m)] t = time.time() for it in xrange(iters): random.shuffle(buffers) decoded_buffers = buffers[:k] encoded_buffers = buffers[k:] code.encode(decoded_buffers, encoded_buffers) return time.time()-t
def coding_tests(raw_data, encoded_data, bitfield, iters=10): code = CauchyEC(k, m, bitfield=bitfield) for i in xrange(iters): code.encode(raw_data, encoded_data) erasures = random.sample(range(n), m) for i in erasures: if i < k: raw_data[i].fill(-1) else: encoded_data[i - k].fill(-1) code.decode(raw_data, encoded_data, erasures)
numpy.set_printoptions(linewidth=160) k = 3 n = 7 m = n-k w = 4 size = 32 print 'Creating raw objects and encoded buffers...' raw_data = [numpy.ndarray(shape=(size,), dtype=numpy.uint8) for i in xrange(k)] for i,buff in enumerate(raw_data): buff.fill(random.randrange(256)) encoded_data = [numpy.zeros(size, dtype=numpy.uint8) for i in xrange(m)] code = CauchyEC(k, m, bitfield=w) code.encode(raw_data, encoded_data) print '\nRAW DATA:' for i,d in enumerate(raw_data): print i,d print '\nPARITY DATA:' for i,d in enumerate(encoded_data): print i,d erasures = random.sample(range(n), m) print '\nERASURES:',erasures for i in erasures: if i<k: