У меня есть интересная генетическая проблема, которую я хотел бы решить на нативном Python (ничего кроме стандартной библиотеки). Это для того, чтобы решение было очень простым в использовании на любом компьютере, не требуя от пользователя установки дополнительных модулей.
Вот оно. Я получил 100 000 последовательностей ДНК (до 2 миллиардов) из 454 серий нового поколения. Я хочу обрезать конечности, чтобы удалить праймеры, которые могут присутствовать на обоих концах, как в обычном, так и в смысловом порядке. Пример:
seq001: ACTGACGGATAGCTGACCTGATGATGGGTTGACCAGTGATC
--primer-1--- --primer-2-
Праймеры могут присутствовать один или несколько раз (один сразу за другим). Нормальный смысл всегда слева, и обратный справа. Моя цель, таким образом, найти праймеры, вырезать последовательность так, чтобы осталась только часть, не содержащая праймеров. Для этого я хочу использовать классический алгоритм выравнивания (например, Смит-Уотерман), который был реализован на нативном Python (то есть: не с помощью биопиона). Мне известно о том, что для этого может потребоваться некоторое время (до нескольких часов).
Примечание: это НЕ прямой поиск по слову, поскольку ДНК, как в последовательностях, так и в праймерах, может быть "мутирована" по разным техническим причинам.
Что бы вы использовали?