2
Я пытаюсь найти наиболее часто используемые подстроки (определенной длины L) на строке, но допускающие определенный порог или ошибку T (в позиции подпоследовательностей), очевидно, не более L сам. Однако до сих пор я не добился успеха. Как я могу заполнить код?наиболее часто встречающиеся подстроки с допуском
stn='KLHLHLHKPLHLHLPHHKLH'
L = 4 #(lenght of the pattern)
T = 1 #(maximum tolerance or permitted error in any position of the query pattern)
pattcount = {}
for n in range(len(stn)- L+1):
patt = stn[n:n+L]
s_ = stn[i:i+len(patt)]
if LevenshteinDistance(s_, patt) == T:
pattcount[patt] = pattcount[patt] + 1 if pattcount.has_key(patt) else 1
max = 0
max_patt = []
for p,v in pattcount.iteritems():
if v > max:
max_patt = [p]
max = v
elif v == max:
max_patt += [p]
print (" ".join(max_patt))
Поэтому, например, если наиболее часто является KLH, как может частоты чЛГ, PLH, КРП, KPH раздуть частоты KLH (для того, чтобы быть сообщено)?
Благодарим за помощь. Тем не менее, у меня не было успеха, как только я введу следующий код, предшествующий коду, который вы мне отправили: line = 'KLHLHLHKPLHLHLPHHKLH' L = 4 tups = {} Что я делаю неправильно? (первая печать (tups) пуста) –
http://ideone.com/EyBCC8 –
ОК, спасибо, теперь скрипт показывает ошибку в разделе «для x» (недопустимый синтаксис). Может ли это быть связано с версией Python? (2.7.3) –