コード例 #1
0
ファイル: mtf_test.py プロジェクト: EasyHard/pybwt-compress
 def test_both(self):
     for x in xrange(10):
         chars = string.ascii_uppercase + string.digits
         seq = generator(1024*16, chars)
         encode_seq = mtf.encode(chars, seq)
         decode_seq = mtf.decode(chars, encode_seq)
         self.assertEqual(decode_seq, list(seq))
コード例 #2
0
ファイル: bwtzip.py プロジェクト: EasyHard/pybwt-compress
def decompress(compf, f):
    """
    Decompress a file.
    """
    # read alphabet
    alphabet = cPickle.load(compf)
    print "alphabet:\n%r" % alphabet
    count = 0
    while True:
        header = compf.read(8)
        if header == '':
            break
        print "block %r:" % count
        nbits, I = struct.unpack('>2I', header)
        freqs = load_freqs(compf)
        #print freqs
        nbyte = (nbits+7) / 8

        huff_encode = to01(compf.read(nbyte))[:nbits]
        #print "huff_encode:\n%r" % huff_encode
        coding, root = huff.generate_coding(freqs)
        #print "coding:\n%r" % coding
        huff_decode = huff.decode(huff_encode, root)
        mtf_decode = mtf.decode(alphabet, huff_decode)
        bwt_decode = bwt.decode(mtf_decode, I, reverse = True)
        content = ''.join(bwt_decode)
        f.write(content)
        print "nbits = %r, I = %r, length = %r" % (nbits, I, len(content))
        count = count + 1
コード例 #3
0
ファイル: mtf_test.py プロジェクト: EasyHard/pybwt-compress
 def test_decode(self):
     l = mtf.decode('abcr', [2, 1, 3, 1, 0, 3])
     self.assertEqual(l, list('caraab'))