У меня есть файл, содержащий последовательности и другой файл, содержащий идентификаторы. Я пытаюсь извлечь из файла последовательностей только те, которые соответствуют идентификаторам.
Я пытался написать скрипт на 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.
В общем, как мне найти точные шаблоны в строке