Работа с деревьями суффиксов в python

Я относительно новичок в python и начинаю работать с суффиксными деревьями. Я могу построить их, но у меня проблема с памятью, когда строка становится большой. Я знаю, что их можно использовать для работы со строками ДНК размером 4 ^ 10 или 4 ^ 12, но всякий раз, когда я пытаюсь реализовать метод, у меня возникают проблемы с памятью.

Вот мой код для генерации строки и дерева суффиксов.

import random

def get_string(length):
    string=""
    for i in range(length):
        string += random.choice("ATGC")
    return string

word=get_string(4**4)+"$"

def suffixtree(string):
    for i in xrange(len(string)):
        if tree.has_key(string[i]):
            tree[string[i]].append([string[i+1:]][0])
        else:
            tree[string[i]]=[string[i+1:]]
    return tree

tree={}
suffixtree(word)

Когда я добираюсь до 4**8, у меня возникают серьезные проблемы с памятью. Я новичок в этом, поэтому я уверен, что мне что-то не хватает при хранении этих вещей. Мы будем очень признательны за любые советы.

В качестве примечания:я хочу выполнить поиск строк, чтобы найти совпадающие строки в очень большой строке. Размер соответствия строки поиска равен 16. Таким образом, это будет искать строку размера 16 в большой строке, а затем переходить к следующей строке и выполнять другой поиск. Поскольку я буду выполнять очень большое количество поисков, было предложено дерево суффиксов.

Большое спасибо

5
задан jogojapan 12 April 2012 в 02:18
поделиться