Поиск строки, допускающей одно несоответствие в любом месте строки

Я работаю с последовательностями ДНК длиной 25 (см. Примеры ниже). У меня есть список из 230 000, и мне нужно искать каждую последовательность во всем геноме (токсоплазма, паразит gondii). Я не уверен, насколько велик геном, но намного длиннее, чем 230000 последовательностей.

Мне нужно искать каждую из моих последовательностей по 25 символов, например (AGCCTCCCATGATTGAACAGATCAT).

Геном отформатирован в виде непрерывной строки, то есть (CATGGGAGGCTTGCGGAGCCTGAGGGCGGAGCCTGAGGTGGGAGGCTTGCGGAGTGCGGAGCCTGAGCCTGAGGGCGGAGCCTGAGGTGGGAGGCTT ....)

Мне все равно, где и сколько раз он найден, только вне зависимости от того, есть он или нет.
Это просто, я думаю -

str.find(AGCCTCCCATGATTGAACAGATCAT)

Но мне также нужно найти точное совпадение, определенное как неправильное (несоответствующее) в любом месте, но только в одном месте, и записать местоположение в последовательности. Я не уверен, как это сделать. Единственное, о чем я могу думать, это использовать подстановочный знак и выполнять поиск с подстановочным знаком в каждой позиции. То есть, поиск 25 раз.

Например,
AGCCTCCCATGATTGAACAGATCAT
AGCCTCCCATGATAGAACAGATCAT

Близкий матч с несовпадением в позиции 13.

Скорость не является большой проблемой, потому что я делаю это только 3 раза, хотя было бы неплохо, если бы она была быстрой.

Существуют программы, которые делают это - находят совпадения и частичные совпадения - но я ищу тип частичного совпадения, который нельзя обнаружить в этих приложениях.

Вот аналогичный пост для Perl, хотя они сравнивают только последовательности и не ищут непрерывную строку:

Связанный пост

Ответы на вопрос(13)

Ваш ответ на вопрос