Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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: