예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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
예제 #4
0
파일: Runner.py 프로젝트: mskec/WaveletTree
"""
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)
예제 #5
0

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)
예제 #6
0
        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
예제 #7
0
"""
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)
예제 #8
0
파일: Tester.py 프로젝트: mskec/WaveletTree
        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