def main(): file_reader = FileReader(sys.argv) if (not file_reader.is_read()): sys.exit() wavelet_tree = WaveletTree(file_reader.get_characters()) print wavelet_tree.track_symbol(1) print wavelet_tree.rank_query('$', 45) print wavelet_tree.select_query('e', 1)
def WTquery(): script = sys.argv[0] action = sys.argv[1] if action == 'build': filename = sys.argv[2] outputfile = sys.argv[3] data = open(filename, "r") inputString = data.read() # type(inputString): str inputString = list(inputString) for i in range(len(inputString)): if inputString[i] == ' ': inputString[i] = '_' wt = WaveletTree(inputString) sys.stdout = open(outputfile, "w") print(wt.UNIQ) print(wt.SIZE) print(wt.character) print(wt.wt) print(wt.int) elif action == 'access': wtfile = sys.argv[2] index = sys.argv[3] with open(wtfile, "r") as df: lines = df.readlines() s = lines[3].rstrip('\n') wtTable = yaml.load(s, Loader=yaml.FullLoader) #wtAccess = Access(wtTable, index) elif action == 'rank': wtfile = sys.argv[2] index = int(sys.argv[3]) with open(wtfile, "r") as df: lines = df.readlines() a = lines[3].rstrip('\n') wtTable = yaml.load(a, Loader=yaml.FullLoader) b = lines[4].rstrip('\n') wtInterval = yaml.load(b, Loader=yaml.FullLoader) #print(wtTable) wtRank = Rank(wtTable, wtInterval, index) elif action == 'select': values = data
""" if __name__ == '__main__': if len(sys.argv) < 4: print 'Missing arguments: <in_file> <out_file> <task> <task_args...>' exit(-1) task = sys.argv[3] fasta_file = FASTA(sys.argv[1]) fasta_file.read() alphabet = list(set(fasta_file.data)) alphabet.sort() tree = WaveletTree() tree.build(alphabet, fasta_file.data) if task == 'access': index = int(sys.argv[4]) result = tree.access(index) elif task == 'rank': position = int(sys.argv[4]) character = sys.argv[5] result = tree.rank(position, character) elif task == 'select': nth_occurence = int(sys.argv[4]) character = sys.argv[5] result = tree.select(nth_occurence, character)
def report_access(tree): print 'Access simple.fa' for idx in xrange(len(tree.root_node.bit_vector)): print 'access(%s) = %s' % (idx, tree.access(idx)) def report_select(tree): print 'Select simple.fa' for c in tree.root_node.alphabet: for nth_occurence in xrange(10): print 'select(%s, %s) = %s' % (nth_occurence, c, tree.select(nth_occurence, c)) if __name__ == '__main__': fasta_file = FASTA('../simple.fa') fasta_file.read() alphabet = list(set(fasta_file.data)) alphabet.sort() tree = WaveletTree() tree.build(alphabet, fasta_file.data) report_rank(tree) report_access(tree) report_select(tree)
exit(-1) # Reading data read_stopwatch = Utils.Stopwatch() fasta_file = FASTA(sys.argv[1]) read_stopwatch.start() fasta_file.read() read_stopwatch.stop() read_memory_kB = Utils.get_max_memory_kB() alphabet = list(set(fasta_file.data)) alphabet.sort() # Building tree build_stopwatch = Utils.Stopwatch() tree = WaveletTree() build_stopwatch.start() tree.build(alphabet, fasta_file.data) build_stopwatch.stop() build_memory_kB = Utils.get_max_memory_kB() if sys.argv[2] == 'query': data_size = len(fasta_file.data) test_idx = data_size / 2 test_character = fasta_file.data[0] test_nth_occurence = math.floor(math.sqrt(test_idx)) test_runs = int(sys.argv[3]) stopwatch = Utils.Stopwatch() time_access = 0 time_select = 0