def scheme3(kmer): ''' 2 bit alphabet, BWT, MTF, shitty huffman encoding, 0 => 1, 1 => 01, 2 => 000, 3 => 001 Add 6 bits for eol position ''' def huff_size(c): return { 0: 1, 1: 2, 2: 3, 3: 3, }[c] trans_kmer, eol_idx = bwt.eol_format(bwt.bwt(kmer)) trans_kmer = mtf.mtf(trans_kmer) size = 0 size += 6 i = 0 while i < len(trans_kmer): size += huff_size(trans_kmer[i]) i += 1 return size
def test_mtf(self): out = mtf.mtf("ACGATGTA") self.assertEqual(out, [0,1,2,2,3,2,1,2])
def test_identity(self): encoding = mtf.mtf("ACTGTGTA") decoding = mtf.imtf(encoding) self.assertEqual(''.join(decoding), "ACTGTGTA")