Как найти «точный строковый шаблон» в файле - PullRequest
0 голосов
/ 05 ноября 2019

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

Я пытался написать скрипт на python, извлекать идентификаторы в списке и искать каждый из них в файле последовательностей.


def get_seq(seqfile,id_list):
    a=0
    l=[]    
    for line in id_list:
        l.append(line.rstrip())


    for elem in l:
        for line in seqfile:
            if line[0]==">" and str(line[1:4]) in l:
                    a=1
            elif line[0]==">" and str(line[1:4]) not in l:  
                    a=0
            if a==1:
                print line

Я приведу вам очень короткий пример того, что я ожидаю получить. Имея следующий файл последовательности:

>111
ababaabababababababababababababababababababa

>1111
abababababaabababababab

>1211
abbbbbbbbbbbaaaaaaaaaaaaaaaa

>1332
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

>12
aaaassssssssssssaaaaaaaaaaaaaaaa

и следующий файл идентификатора:

111
1332
12

Я ожидаю в качестве вывода:

>111
ababaabababababababababababababababababababa
>1332
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
>12
aaaassssssssssssaaaaaaaaaaaaaaaa

Однако яполучение:

>111
ababaabababababababababababababababababababa
>1111
abababababaabababababab

Я почти уверен, что ошибка во второй части кода, при попытке поиска шаблона в строке [str (line [1: 4])]. У меня здесь двойная проблема:

  • Идентификаторы имеют разную длину, поэтому я не знаю, как указать переменную длину при поиске шаблона.
  • Может случиться так, что самые длинные идентификаторысодержит более короткую подстроку, как в моем случае: при поиске шаблона> 111 он также возвращает> 1111.

В общем, как мне найти точные шаблоны в строке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...