Как собрать воедино короткие фрагменты ДНК? Соответствие базовых пар в файле последовательностей - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь собрать воедино короткое чтение ДНК. Мне нужно сопоставить около 3 пар оснований с другими короткими фрагментами чтения. (базовая пара = отл. TCG (в основном только 3 буквы))

Я пробовал выражения регулярных выражений, но когда я пытаюсь прочитать файл с кучей коротких операций чтения, мне нужно сделать нуклеотиды переменными, и я не думаю, что регулярное выражение делает это. У меня есть файл с кучей этих коротких операций чтения, и мне нужно сопоставить эти пары оснований с другими короткими операциями чтения, которые имеют те же последовательности пар оснований.

ех. У меня есть две короткие строки в файле:

AAAGGGTTTCCCGGGAAA TCA

CCCGGGAAA TCA GGGAAATTT

Мне нужен результат:

AAAGGGTTTCCCGGGAAA TCA GGGAAATTT

Как мне сопоставить и вставить совмещенные линии поверх других строк, чтобы я мог объединить их в точке сходства?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Простое решение для каждой подпоследовательности вычислить 5 хвостов и пять голов. Попробуйте тогда все комбинации с углубленным первым поиском.

Более изощренный способ рисования графика, на котором направленные ребра помечены количеством совмещенных букв (например, 4-9). Примените решения коммивояжера или другой подходящий алгоритм, чтобы найти кратчайший путь для всех вершин.

Я уверен, что есть много подходящих инструментов и методов, разработанных для вывода генома. https://www.youtube.com/watch?v=fGxx7TvQ3f4.

Чтобы найти расстояние между двумя последовательностями, инвертируйте одну и найдите самый длинный общий префикс.

def joinifmatch (seq1, seq2, minlen = 4): tail = seq2 [: 4] для i в диапазоне (len (seq1), 4, -1) if seq1.startswith (seq2 [n-i:]) вернуть "% s% S" (seq2 [: n-i], seq1)

0 голосов
/ 30 октября 2018

Вы можете просто найти индекс последовательности совпадений во второй последовательности и объединить их:

seq1 = 'AAAGGGTTTCCCGGGAAATCA'
seq2 = 'CCCGGGAAATCAGGGAAATTT'
match_pair_count = 5
match_seq = seq1[-match_pair_count:]
match_index = seq2.rfind(match_seq)
combined_seq = seq1[:-match_pair_count] + seq2[match_index:]

ПРИМЕЧАНИЕ. Если вам нужно отследить случаи, когда последовательность совпадения не появляется во второй последовательности, вам необходимо добавить код для обработки match_index == -1.

...