コード例 #1
0
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
コード例 #2
0
ファイル: dbcurrentanalyzer.py プロジェクト: thientu/wda
	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)
コード例 #3
0
ファイル: dbcurrentanalyzer.py プロジェクト: JeroenDeDauw/wda
    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)
コード例 #4
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)
コード例 #5
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)
コード例 #6
0
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
コード例 #7
0
ファイル: PicrossAlgorithms.py プロジェクト: MartGro/PiCross
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
コード例 #8
0
def int2bitarray(num):
    return bitarray.bitarray(num)