def decode(filepath, codebook): inf_rate = floor(log(len(codebook), 2)) / len(codebook[0]) print("Information rate: " + str(inf_rate)) bits_per_codeword = floor(inf_rate * len(codebook[0])) bit_arr = bitarray.bitarray() seq_indices = dict(zip(codebook, range(0, len(codebook)))) with open(filepath, 'r') as f: indata = "" infile = f.readlines() for line in infile[1::2]: indata += ("".join(line.strip())) encoded_data = [ indata[i:i + len(codebook[0])] for i in range(0, len(indata), len(codebook[0])) ] for i in range(len(encoded_data)): index = seq_indices[encoded_data[i]] if i == len(encoded_data) - 1: bits = bitarray.util.int2ba(index) mod_eigth = (len(bit_arr) + len(bits)) % 8 zeros_needed = mod_eigth if mod_eigth == 0 else (8 - mod_eigth) bits = bitarray.bitarray("0" * zeros_needed) + bits else: bits = bitarray.util.int2ba(index, bits_per_codeword) bit_arr.extend(bits) return bit_arr
def __init__(self): self.helper = processinghelper.ProcessingHelper() self.db = database.Database() self.dayStats = {} self.totalItems = 0 self.startTime = 0 self.processeditems = bitarray.bitarray(2**26) # about 30 M items self.processeditems.setall(0)
def __init__(self): self.helper = processinghelper.ProcessingHelper() self.db = database.Database() self.dayStats = {} self.totalItems = 0 self.startTime = 0 self.processeditems = bitarray.bitarray(2 ** 26) # about 30 M items self.processeditems.setall(0)
def integer_to_bitarray(int, min_size=False): remains = int bits = [] while remains > 0: bits.append(remains % 2) remains = remains // 2 if min_size: # pad with zeros for i in range(min_size - len(bits)): bits.append(0) return bitarray.bitarray(bits)
def integer_to_bitarray(int, min_size = False): remains = int bits = [] while remains > 0: bits.append(remains % 2) remains = remains // 2 if min_size: # pad with zeros for i in range(min_size - len(bits)): bits.append(0) return bitarray.bitarray(bits)
def encode(filepath, codebook): inf_rate = floor(log(len(codebook), 2)) / len(codebook[0]) print("Information rate: " + str(inf_rate)) bits_per_codeword = floor(inf_rate * len(codebook[0])) with open(filepath, "rb") as f: bits = bitarray.bitarray() bits.fromfile(f) chunks = [ bits[i:i + int(bits_per_codeword)] for i in range(0, len(bits), int(bits_per_codeword)) ] encoded_data = list() for chunk in chunks: encoded_data.append(codebook[bitarray.util.ba2int(chunk)]) return encoded_data
def CreateBitarray(lenstorage, positionstorage, length): ar = bitarray.bitarray(length) ar.setall(False) for x in range(lenstorage.__len__()): ar[positionstorage[x] : positionstorage[x] + lenstorage[x] : 1] = True return ar
def int2bitarray(num): return bitarray.bitarray(num)