Information
Theory

Spring 2017
course
navigation

dylan BWT notes

Dylan's Burrows-Wheeler transform notes
def rotations(t): t+="\003" #etx tt = t*2 return [tt[i:i+len(t)] for i in range(0,len(t))] def bwm(t): return sorted(rotations(t)) def bwt(t): return ''.join([x[-1] for x in bwm(t)]) def twb(bwt): L = [] ranks = {} for c in bwt: if c not in ranks: ranks[c] = 0 else: ranks[c] += 1 L.append((c,ranks[c])) F = sorted(L) """ display F-L print() print("Matrix") for i in range(len(L)): print(F[i],L[i]) print() """ indx = L[0] rstr = '' while 1: if ord(indx[0]) == 3: break rstr = indx[0] + rstr indx = L[F.index(indx)] return rstr test_string = "banana banana banana" """ aaannnnnnbbb aaaaaa banana banana banana """ print(bwt(test_string)) print(twb(bwt(test_string)))
http://cs.marlboro.edu/ courses/ spring2017/info/ notes/ dylan_BWT_notes
last modified Tuesday February 7 2017 8:39 am EST