2015-07-02 12 views
1

Питона Модуль регулярных выражений позволяют нечеткого соответствиюPython модуля регулярного выражения нечеткого соответствие: замена рассчитывать не как ожидалось

Можно указать допустимое количество замен, S, инсерция, I, делеция, д, и общие ошибки , е, позволило

The fuzzy_counts 'option' returns a tuple (0,0,0), where: 
match.fuzzy_counts[0] = the counts for 's', 
match.fuzzy_counts[1] = counts for 'i' and 
match.fuzzy_counts[2] = counts for 'd' 

делеции и вставки подсчитывают, как ожидалось, но не замены

В приведенном ниже примере, единственное изменение является один символ удален в запросе, но отсчитывать замены составляет 6 (7, если опция BestMatch удаляются)

Как замены подсчитывали?

Я был бы признателен, что кто-то может кто-нибудь объяснить, как это работает для меня

`import regex 
reference = "(TATGGGA[CT][GC]AAAG[CT]CT[AC]AA[GA]CCATGTG){s<7,i<3,d<3,e<8}" 
query = "TATGGACCAAAGTCTCAAGCCATGTG" 
match = regex.search(reference, query, regex.BESTMATCH) 
print(match.fuzzy_counts) 
(6,0,1)` 

Кстати, match.fuzzy_counts, возможно, что это сообщение было после того, как: Python "regex" module: Fuzziness value

ответ

1

Вопрос кажется для связи с значением в допустимая ошибка настройка.

Уменьшения s к s < 3 изменяют нечеткий счет матча кортежа вниз:

reference = "(TATGGGA[CT][GC]AAAG[CT]CT[AC]AA[GA]CCATGTG){s<3,i<3,d<3,e<4}" 
query = "TATGGACCAAAGTCTCAAGCCATGTG" 
match = regex.search(reference, query, regex.BESTMATCH) 
print(match.fuzzy_counts) 
(1,0,1) 

уменьшая допустимую погрешность для «с» еще больше возвращается ожидаемый «s» забить в этом матче:

reference = "(TATGGGA[CT][GC]AAAG[CT]CT[AC]AA[GA]CCATGTG){s<2,i<3,d<3,e<4}" 
query = "TATGGACCAAAGTCTCAAGCCATGTG" 
match = regex.search(reference, query, regex.BESTMATCH) 
print(match.fuzzy_counts) 
(0,0,1) 

Почему это ведет себя таким образом, для меня все еще остается загадкой.

+0

Это поведение, по-видимому, исправлено (регулярное выражение 2.4.106) все приведенные выше примеры вернут правильный балл indel/substitution (0,0,1) –